c语言scanf怎么老是报错
答:scanf里面我没听说过能加\n。但是关于字符的问题,我想是垃圾字符的缘故。以前我遇到过垃圾字符的问题。我以前写为了记住关于垃圾字符的问题,还写到过blog上。复制来你看看吧~!~!浅谈C语言中的垃圾字符- - 在C语言中,如果使用字符型变量(就是char型)时在有连续输入的情况下,很容易因为出现垃圾...
答:这是警告,不是错误。可以忽略。scanf不检查边界,这是scanf自身的特性。 这个警告是说为了增加安全性,可以用scanf_s来代替。但是scanf_s不是ansi C函数,写出的代码失去了良好的可移植性,不建议使用。如果只是练习,这些都不需要考虑,用scanf即可。也可以看看这个回答:http://zhidao.baidu.com/...
答:如果非要用scanf函数,那么通过以下两种方式可以禁止警告:(1)右击项目——属性——C/C++——预处理器——预处理器定义中增加_CRT_SECURE_NO_WARNINGS,然后点确定,退出。(2)在函数最顶头进行定义:#define _CRT_SECURE_NO_WARNINGS,也可以禁止报错警告。
答:没事,这个是告诉你scanf不安全,不会对缓存的长度进行验证,你可以用比较安全的函数scanf_s , 用法一样,功能一样。
答:朋友,你没有加输入分隔符,空格,逗号都可以,你加上试试如果有其他错再说。这是最明显的错误(就是scanf中%c中间加)我用的是TC,都是C语言,应该是一样的,希望能够帮助到你,注意在输入的时候也要用逗号隔开
答:char *s 是一个指针,scanf("%s",s); 这是给字符串变量赋值的语句,你指针没有被初始化,你运行时它会随机指向一块内存空间。建议你以后定义指针时立即初始化下,为char *s = NULL; 否则会造成野指针的现象。再声明定义个字符串 char a[100]; s = a;再用scanf("%s",s);这样就...
答:include<stdio.h> int main(){ char str[50];int a;scanf("%s%d",str,&a,&a);printf("str=%s\n",str);printf("a=%d\n",a);return 0;} 你下面的代码我给你改了一下,把%s%d之间的空格去掉了,然后加了一个&a,通过两次赋值,消除缓冲中回车的干扰 ...
答:scanf("%s",num);printf("student name:");fflush(stdin);scanf("%s",name);printf("student age:");fflush(stdin);scanf("%d",&age);printf("student sex:");fflush(stdin);scanf("%c",&sex);printf("student brith:");fflush(stdin);scanf("%s",birth);printf("student add:");...
答:所以printf就输出了上次接收的444。如此往复。把scanf("%c",&y);改成scanf(" %c",&y);,即在%前加一个空格,把输入444时遗留在输入缓冲区里的'\n'吸收掉,就能等你输入数据了。但由于y是char型,无论输入什么都不会是0,所以while循环不会停止。正确改法是在scanf("%c",&y);前加一句...
答:这是因为你输入的3和g之间有一个空格, 而空格是可以被当成字符的. 所以打印ch时就打印了一个空格.空格可以用来分开连续的两个整数的输入, 但中间有字符类型输入的话, 不适用空格分隔, 你可以直接输入连续的 3g6, 就会得到你要的结果.或者改成 scanf("%d %c %d", &i, &ch, &j);这样就可以...
网友评论:
邱步15194341695:
为什么c编译器对scanf函数老是提示出错哪? -
38150皇莉
: 将main()函数的返回值改为int类型,并加上return 0;语句,具体修改如下:********************** 修改如下(注意,由于scanf()中的三个%d是以逗号分隔的,所以输入整数时也要用逗号分隔):#include<stdio.h> int main(void)/*注意这里*/ ...
邱步15194341695:
c语言中为什么变量定义在scanf后面会报错 -
38150皇莉
: 这是由于编译器对C语言标准的支持情况造成的.估计是你所用的编译器是按照C89标准执行的.C89规定, 在C语言中, 变量的声明必须位于任何可执行语句之前;不过在C99以及C++中, 你可以在任何地方声明变量; 解决方案:1. 将文件的后缀名改为.cpp, 编译器将会以C++的方式编译他(注意: 不推荐这种方式);2. 抛弃老版本的编译器, 换成新版;3. 老老实实将变量全部声明在所有可执行语言的前面.
邱步15194341695:
C语言中,为什么函数scanf没有语法错误但报出运行时非法内存访问错误?是由哪个参数引起的? -
38150皇莉
: 可能有输入字符串超出数组长度.
邱步15194341695:
c语言中用scanf函数先输入字符串,后输入数值.输出时会出现错误的数值,怎么解决 -
38150皇莉
: #include<stdio.h> int main() { char str[50]; int a; scanf("%s%d",str,&a,&a); printf("str=%s\n",str); printf("a=%d\n",a); return 0; } 你下面的代码我给你改了一下,把%s%d之间的空格去掉了,然后加了一个&a,通过两次赋值,消除缓冲中回车的干扰
邱步15194341695:
简单C语言scanf输入问题 -
38150皇莉
: (1)我初学c语言时也碰到了跟你一样的问题, 那是因为scanf函数的一个天生的毛病, 你在调用scanf()时,输入一个数字,并按下回车, 你的本意是只想让scanf接受一个数字, 但同时scanf()把那个回车也送入了缓冲区中, 你可以这样改...
邱步15194341695:
C语言中printf,scanf不安全? -
38150皇莉
: 这个在c++中存在开发安全周期的问题,如果你用Vs2013编写c ,那么它会报错,让你换成scanf_s,printf应该是安全的
邱步15194341695:
C语言 scanf为什么会出现runtime error -
38150皇莉
: 在三个标记后面加 getchar();就可以了 你没有处理回车换行符
邱步15194341695:
为什么C语言程序输入运行总说有个错误?请教高手解答 -
38150皇莉
: 新手用C语言经常犯的一个错误就是 scanf("%d",&n);里面丢掉了"&" 当然程序出错的原因是非常多的,既然你问程序出错原因,可是又不提供足够的信息,抱歉,那我只能推测你是新手了.C语言编程习惯很重要啊,否则,内存非法访问这种错误会经常发生,下标越界、丢个星号,或者&号,又或者定义了一个指针但是没有初始化过就访问它,很容易崩溃掉的,这些错误编译器几乎是不会检查出来的,运行的时候就是灾难性后果了,而且还不好找原因
邱步15194341695:
scanf和printd是c语言提供的输入输出函数为什么错误 -
38150皇莉
: 如果你是在vs高级版本中使用,就会报错,因为vs把它升级了,改为scanf_s ,该函数比原来多了个参数,功能是一样的,比以前那个scanf函数更安全 而上面的printd是你打错的,应该是printf,在高级版本中这个函数还是一样可用的
邱步15194341695:
C语言编程序时出现scanf函数输入的数据出错,怎么破. -
38150皇莉
: 因为你的scanf函数已经规定了输入的格式,你的输入有问题,你应该输入a=9,b=8,c=7