gets和scanf一起用
答:scanf(..);输入字符按下回车键后,gets()函数会把回车键当做输入的字符。所以在执行gets()前要把回车过滤掉!!改正后代码:include<stdio.h> main(){ char a1[5] = "",a2[5] = "",a3[5] = "",a4[5] = "";scanf("%s%s",a1,a2);printf("a1=%s\n",a1);printf("a2=%s\n"...
答:scanf和gets不能混合使用,如果一个程序中用scanf的话,一般不能再用gets,反之亦然。 1:...2:gets()输入字符串时,可以包含空格在内的字符,在回车时,自动将字符串结束标志'\0'赋予字符数组最后一个元素。scanf函数不能输入包含空格字符的字符串,也就是说空格是scanf默认的结束符号。3:如果像...
答:scanf可以输入所有类型的数据,而gets只能输入字符串;当scanf在前面的时候输入数据和后面的字符串中间会用空格分开,这时gets就无法区分这个空格是否属于gets的输入。你在scanf后面加一个getchar();会解决问题的。
答:scanf("%d ",&a);//可以吸收所有连续的空白(空格,回车,tab)2:在gets前面加一句 rewind(stdin);//清空输入缓冲区
答:h;printf("输入长和高:");scanf("%d%d", &l, &h); printf("输入字符串a=");flushall();//清空缓冲区gets(a);puts(a);return 0; }这样就可以了。非格式化输入,字符和字符串的输入会受到前次输入缓冲区的影响,因此在gets、getchar等接收字符输入前,应该清空缓冲区。
答:gets() 是读一行字符串,包括在前在后在半当中的 空格,空白,...scanf("%d",&k); 和 scanf("%d\n",&k); 不同。后者可以吃掉一个 Enter 键。简单保险的办法是用 fflush(stdin); 清除 输入缓冲区。你就 不用担心 输入行 残留 的数字,字符,空白和Enter 键:scanf(。。。); ...
答:1、scanf你用的格式为"%c",所以只会读入单个的字符,不管是普通字符还是空格回车tab都会直接输入给对应的char变量。如果用的格式为"%s",那么会忽略空格、回车、tab 。2、gets不会清空,但gets会忽略输入结尾的那个回车,然后加个'\0'来确保字符串正确结束,所以第一个列子中,前10个字符输入给a,...
答:scanf()函数返回成功赋值的数据项数,出错时则返回EOF gets()用于从标准输入流stdin读入一个整行(以'\n'或EOF)结束,写入ptr指向的字符数组,并返回这 个指针;出错或遇到文件结束时则返回NULL。行末的'\n'从流中取出,但不写入数组。gets()不检查被写 入的数组大小。getchar()用于从标准输入流...
答:当用scanf("%s",str);来获取这段英文文字的时候,输出会在第一个空格的地方程序结束,如下图:而使用gets()时不会出现这种情况,可以把空格之后的字符也都正常输出来。第一次输入Hello world!后,字符串Hello world!都会被读到输入缓冲区中,而scanf()函数取数据是遇到回车、空格、TAB就会停止,也...
答:scanf("%s%f",name[i],&score);如果你输入 “abc 1234”(注意 引号不是输入的数据,只是为了方便阅读)这个时候 name[i]会读取数据的,但是读取的数据遇到空格就视为读取结束。这样剩余下的数据就是 一个空格外加1234.当score开始读取的时候,读到的第一个数据是一个空格,而不是希望的float类型...
网友评论:
荆路13717431933:
scanf能不能与gets一起用,请说明原因,详细点哈. 我试过,好像不能 -
53954孙馥
: gets函数可以一次接收一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入. 而scanf函数接收的字符串不会含有空格,即遇到字空格时,认为字符串输入结束,也就是说空格是scanf默认的结束符号.scanf和gets不能混合...
荆路13717431933:
C语言中scanf和gets不可以同时出现在一段程序里吧?为何下列程序可以同时出现呢 -
53954孙馥
: 可以出现在一段程序中.gets(str1); 是用字符串的方法 读整一行字符,允许夹空白.scanf("% 是 按格式 读入数据.需要分2行输入,第一行给 gets, 第2行给 scanf
荆路13717431933:
Linux下的C编程,为什么scanf和gets函数连在一起用,后面的gets函数没有效果? -
53954孙馥
: 当使用scanf语句,你打完回车以后.这个回车会作为一个字符读入到缓冲区中,当执行到gets语句时,就会自动读入这个换行符.相当于gets读入了一个'\n'.只要在scanf语句后加一句getchar();就行了
荆路13717431933:
C语言gets 和 scanf -
53954孙馥
: 我忍不住说一下, 希望已经给出答案的同学们不要介意.scanf("%s%f", name[i], &score); 如果你输入 “abc 1234” (注意 引号不是输入的数据,只是为了方便阅读) 这个时候 name[i]会读取数据的,但是读取的数据遇到空格就视为读取结束.这样剩余下的数据就是 一个空格外加1234.当score开始读取的时候,读到的第一个数据是一个空格,而不是希望的float类型的数据,因此整个缓冲区的流都乱了,所有的数据全部没有用处. 解决的办法就是在 %s与%f之间加上一个空格,就可以解决这个问题.
荆路13717431933:
getchar() 和 gets() 函数为什么要一起用?? -
53954孙馥
: 这里getchar是处理 前面输入号码后的回车符的问题.如果没有这个getchar,那scanf后,会有一个回车符存在输入流的缓冲区内,那么再使用gets的时候,就会取得这个回车符,gets认为输入结束,就不会让用户输入姓名了.
荆路13717431933:
【C语言】gets和puts还有scanf和printf搭配使用 -
53954孙馥
: #include<stdio.h> int main() { char a[50]={0}; int l, h; printf("输入长和高:"); scanf("%d%d", &l, &h);printf("输入字符串a="); flushall();//清空缓冲区 gets(a); puts(a); return 0; }这样就可以了.非格式化输入,字符和字符串的输入会受到前次输入缓冲区的影响,因此在gets、getchar等接收字符输入前,应该清空缓冲区.
荆路13717431933:
gets和scanf同在一个程序中出现使程序产生错误 -
53954孙馥
: #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { char c1[100],c2[100]; /*这里应当是一个数组或指针*/ gets(c1); scanf("%s",&c2); printf("%s\n",c1); printf("%s\n",c2); system("pause"); } 上述程序,我在tc2.0下面,不用fflush也可以显示正确结果.
荆路13717431933:
c语言中,输入一个字符串使用scanf(”%s”)和gets()有什么区别 -
53954孙馥
: 其实用scanf("%s",);和gets();本质上没有什么区别,都是将字符数据输入到制定的内存单元中. 假设定义有字符数组(C语言把字符串按字符数组处理)str[30],那么我们向里面输入字符就可以为: scanf("%s",str); gets(str); 他们都...
荆路13717431933:
字符串的输入,使用scanf和gets,输出puts的方法 -
53954孙馥
: scanf 输入到空格结束.所以 a1="aa" a2="bb" 都是空格结束的.gets输入一行, 到换行结束. 所以 a3="cc dd" puts输出字符串同时换行.所以输出是 aa bb cc dd 选A
荆路13717431933:
puts/gets 和 scanf/printf 用法上的区别... -
53954孙馥
: 一、调用形式不同 gets()函数实现字符串的输入,其调用形式为:gets(字符数组); 调用puts()函数实现字符串的输出,其调用形式为:puts(字符数组); 二、格式scanf语句的一般格式如下: scanf("格式字符串", 地址,…); ...