#include
我再linux用gcc编译c程序的时候,用gets函数的话,就老是给我下面的警告信息: /tmp/ccyhTLKy.o(.text+0x53): In function `main': : the `gets' function is dangerous and should not be used. 这是怎么会事啊? 不用gets,用scanf的话,读字符串,到空格就结束了.怎么改呢?
先看两个程序和其输出结果:)
程序一:
[code]
#include
代码如下: cc=gets if cc==1 puts "Try again" elsif cc==11 puts "You lose" else puts "Enter anumber" end 输出结果: 应该会判断cc的输入值然后按照if的判断做出不同的puts输出才对,但是执行后发现,对gets的赋值if好像根本就没感觉到,无论你键盘给cc赋任何值,结果都是打印出Enter anumber。 为什么?
char str1[20]; char str2[20]; char str3; gets(str1); scanf("%s",str2); 当通过gets(str1)输入完字符串,然后回车。这时回车符会转换为'\0',但scanf("%s",str2)在输入完字符串后,按回车,scanf("%s",str2)不会将回车符转换为'\0'。如果紧接着有scanf("%c",&str3),那么回车符会赋给str3;如果没有scanf("%c",&str3),那么这个回车符停留在哪里?对后面的输入有影响吗? [ 本帖最后由 光速 于 2008-12-25 22:41 编辑 ]
近日翻阅
下面是一个测试程序,
#include
Input(struct student *p){ struct student *a; for(a=p;a
gets(a->num); printf("Name:");gets(a->name); scanf("%d,%d,%d",&(a->score[0]),&(a->score[1]),&(a->score[2])); a->ave_score= (a->score[0]+ a->score[1]+ a->score[2])/3; printf("Now enter one data is off\n"); printf("...