gcc不支持标准c的gets puts函数

最近喜欢用GCC来编译一些C的程序,发现在gcc里面所没有gets函数一直在报错,因此改用fgets来使用
以下所代码(判断指针 字符串大小比较的程序)
一段c源程序代码如下:
1 #include<stdio.h>
  2 #include<string.h>
  3 int main()
  4 {
  5         void swap(char *p1,char *p2);
  6         char str1[20],str2[31],str3[20];
  7         printf("input three line:\n");
  8         gets(str1);
  9         gets(str2);
 10         gets(str3);
 11         if(strcmp(str1,str2)>0) swap(str1,str2);
 12         if(strcmp(str1,str3)>0) swap(str1,str3);
 13         if(strcmp(str2,str3)>0) swap(str2,str3);
 14         printf("Now,the order is:\n");
 15         printf("%s\n%s\n%s\n",str1,str2,str3);
 16         return 0;
 17 }
 18
 19 void swap(char *p1,char *p2)
 20 {
 21         char p[20];
 22         strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
 23 }
~        


编译执行报如下错误,
char123.c: In function ‘main’:
char123.c:8:2: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
  gets(str1);
  ^
char123.c:9:2: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
  gets(str2);
  ^
char123.c:10:2: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
  gets(str3);
  ^
/tmp/ccJuRcmX.o: In function `main':
char123.c:(.text+0x48): warning: the `gets' function is dangerous and should not be used.


该提示说明linux下gcc不支标准c的gets,puts函数,可以用gcc fgets,fputs分别代替gets,puts,其格式及
更改如下:
1 #include<stdio.h>
  2 #include<string.h>
  3 int main()
  4 {
  5         void swap(char *p1,char *p2);
  6         char str1[20],str2[31],str3[20];
  7         printf("input three line:\n");
  8         fgets(str1,20,stdin);
  9         fgets(str2,20,stdin);
 10         fgets(str3,20,stdin);
 11         if(strcmp(str1,str2)>0) swap(str1,str2);
 12         if(strcmp(str1,str3)>0) swap(str1,str3);
 13         if(strcmp(str2,str3)>0) swap(str2,str3);
 14         printf("Now,the order is:\n");
 15         printf("%s\n%s\n%s\n",str1,str2,str3);
 16         return 0;
 17 }
 18
 19 void swap(char *p1,char *p2)
 20 {
 21         char p[20];
 22         strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
 23 }
~        

这样就不会报错了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值