
正文
C语言里有时为什么不执行scanf,c语言程序对,结果执行不了
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
为什么在char类型时用scanf语句,会运行不了???
1、scanf函数用法不对,应该是:scanf(%c%c, &a, &b);即需要在ab前都加取地址符。且输入的时候要输入ab,不带空格,否则b读入的会是空格。
2、char *s 是一个指针,scanf(%s,s); 这是给字符串变量赋值的语句,你指针没有被初始化,你运行时它会随机指向一块内存空间。建议你以后定义指针时立即初始化下,为char *s = NULL; 否则会造成野指针的现象。
3、因为这里只是定义了一个指针变量,并且初始化为一个空指针。
4、因为没有给 p 或者 s 申请内存空间。语法上是对的,编译时可以通过,先进一点的编译器应该有警告,使用未初始化的变量,但很可能会出现运行错误,如果不出现运行错误,就麻烦大了,scanf 改写了不属于该程序的内存。
5、这个错误信息说的很明确呀,你的scanf_s的调用还缺少一个参数(没有传递足够的参数)。
相关问答
Q1: C语言中为什么有的地方不能用scanf?
1、字符型可以用scanf输入,只不过在循环的输入,或者连续多个输入单个字符时,使用scanf处理不好会出些问题。如果处理单个字符的话,一般在scanf语句后还要加一条getchar语句;来接受回车键。
2、当我们写一个程序,你想从键盘输入一个数据的时候,这个时候考虑用scanf 反之,你写的这个程序,根本不用从 键盘输入数据,就不用scanf了。
3、scanf是用于程序在运行时获得从键盘键入的程序。printf是用于打印数据在屏幕上。
4、这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。
Q2: C语言循环里scanf用不了
在scanf(%d,&year);这一句这里,%d表示取得整数,如果year不是整数就会自动把小数部分截掉,只留整数部分赋值给year。
因为scanf输入要按回车,就这么简单。。
因为scanf输入要按回车,输入一个字符后回车,计算机实际上接收了两个字符,即:字符+回车。
这个原因是由于输入数字之后的回车符号引起的;可以在scanf (%c, &option)之前,或者scanf (%d, &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题。
这是因为在上一次使用scanf后没有清空输入缓存, 这样你再次使用scanf的时候函数就可能会认为你已经输入过了。
scanf(%d,&a);这语句只从输入缓冲区接收数字,输入字符时就不会接收,输入的字符永远在缓冲区内。a没有接收值所以a的值为初值0。所以a != b为真,进入while循环。
Q3: c语言,程序哪里错了,为什么后面那个scanf就不执行,提示了是否继续后直...
1、这个原因是由于输入数字之后的回车符号引起的;可以在scanf (%c,&option)之前,或者scanf (%d,&sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题。
2、这是因为在上一次使用scanf后没有清空输入缓存, 这样你再次使用scanf的时候函数就可能会认为你已经输入过了。
3、程序不执行,是等待你的输入。每个scanf都是在等待键盘输入。
4、这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。
5、虽说意义不明,所以,你在操作过程中有按回车键,这个操作会进入输入流,被后面那个scanf(%c,&ch);读取了,ch读取了回车,因此表现为Press any key to continue之前会有一次回车,实际上执行过。
Q4: C语言中关于字符数组输入,scanf为什么没执行
这是因为在上一次使用scanf后没有清空输入缓存, 这样你再次使用scanf的时候函数就可能会认为你已经输入过了。
scanf的意思,就是让你输入一个数值并回车 程序不执行,是等待你的输入。每个scanf都是在等待键盘输入。
C语言中输入函数scanf使用不当,会出现各种错误,正确使用,会提高效率,现把一些注意事项,正确的使用方法和经验分享给大家.在C语言中空白字符括:空格、换行()、回车()、水平制表符()、换页符()、垂直制表符()。
scanf有个缓冲区,用来保存输入的字符,每次调用scanf会去缓冲区读。因为你输入了字母,而你代码里想要读取数字,这个时候scanf就会读取失败。scanf有返回值的,0表示读取错误。
所以单单加一个scanf(%c,&y);也是无法解决问题的,所以建议在之前加一个getchar();当然一般我们对这样格式输入的问题都对变量的类型作数字量处理,而不是这样顺次输入%c控制的字符读入。
\n是scanf()函数的读入数据时的分隔符,不能当做数据赋给变量,除了\n之外,还有\r、\t和“ ”。若希望读入这些控制符,可以使用函数getchar()。
Q5: C语言代码出错,第二个scanf语句不能运行.
1、因为scanf输入要按回车,输入一个字符后回车,计算机实际上接收了两个字符,即:字符+回车。
2、因为scanf输入要按回车,就这么简单。。
3、printf(请问还需要继续输入成绩吗?继续请输入Y,退出请输入除Y以外的任何字符:);getchar( );scanf(%c,&a);因为上面输入分数时打了个回车 用个getchar()吸收回车;不然回车会被scanf用了 望采纳。
4、已经帮你修改测试运行通过,结果如下 。。printf(您已经完成本次游戏,如要继续,请选择(Y/N):);fflush(stdin);//第一处,加个语句,清空缓冲区 scanf(%c,&c);//第二处,将%d修改为%c 。。
5、scanf (%d\n,&a[i][j]); // 漏了 & 符号 (2)如作为 c 程序,必须把声明写到前面,后面写语句。
关于C语言里有时为什么不执行scanf和c语言程序对,结果执行不了的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






