c简单有关问题
c简单问题
main() {
char str[100];
int sft;
printf("Type in the number of shifts (-26 to 26)\n");
scanf("%d", &sft);
printf("Type in a code to be encrypted\n");
gets(str);
printf("%s", str);
return 0;
}
想用gets把第二次输入的字母存到str里面,可是输入完前面的数字程序就停了,没给我输入字母的机会。小白请各位大大帮忙啊!
------解决方案--------------------
getchar()
------解决方案--------------------
ls正解~
------解决方案--------------------
回车被收购了
------解决方案--------------------
scanf执行的时候,你敲完数字按回车,
回车有两个:\n\r
然后,被gets收到了一个,直接退出了
你可以不使用scanf
而是每次都用gets,然后sscanf
------解决方案--------------------
我猜是scanf异常, printf("Type in the number of shifts (-26 to 26)\n");没加\r
scanf("%d", &sft);读到的是上面输出字符串和新输入数字
------解决方案--------------------
#include<stdio.h>
main()
{
char str[100];
int sft;
printf("Type in the number of shifts (-26 to 26)\n");
scanf("%d", &sft);
printf("Type in a code to be encrypted\n");
getchar();
gets(str);
printf("%s", str);
return 0;
}
楼主,在你的程序上修改了一下,现在可以了,你之前不能输出的原因是当你输入数字并按回车的那一刻被ges
回收了,你要正常输入的话,就要用到getchar()来避免gets将回车回收。
------解决方案--------------------
刚才说错了. gets遇到newline就结束了
------解决方案--------------------
遇到上一个scanf()函数留下的回车字符了,在这个scanf()函数后面加上一个ffulsh(stdio);就可以了。
------解决方案--------------------
main() {
char str[100];
int sft;
printf("Type in the number of shifts (-26 to 26)\n");
scanf("%d", &sft);
printf("Type in a code to be encrypted\n");
gets(str);
printf("%s", str);
return 0;
}
想用gets把第二次输入的字母存到str里面,可是输入完前面的数字程序就停了,没给我输入字母的机会。小白请各位大大帮忙啊!
------解决方案--------------------
getchar()
------解决方案--------------------
ls正解~
------解决方案--------------------
回车被收购了
------解决方案--------------------
scanf执行的时候,你敲完数字按回车,
回车有两个:\n\r
然后,被gets收到了一个,直接退出了
你可以不使用scanf
而是每次都用gets,然后sscanf
------解决方案--------------------
我猜是scanf异常, printf("Type in the number of shifts (-26 to 26)\n");没加\r
scanf("%d", &sft);读到的是上面输出字符串和新输入数字
------解决方案--------------------
#include<stdio.h>
main()
{
char str[100];
int sft;
printf("Type in the number of shifts (-26 to 26)\n");
scanf("%d", &sft);
printf("Type in a code to be encrypted\n");
getchar();
gets(str);
printf("%s", str);
return 0;
}
楼主,在你的程序上修改了一下,现在可以了,你之前不能输出的原因是当你输入数字并按回车的那一刻被ges
回收了,你要正常输入的话,就要用到getchar()来避免gets将回车回收。
------解决方案--------------------
刚才说错了. gets遇到newline就结束了
------解决方案--------------------
遇到上一个scanf()函数留下的回车字符了,在这个scanf()函数后面加上一个ffulsh(stdio);就可以了。
------解决方案--------------------