最近喜欢用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 }
~
以下所代码(判断指针 字符串大小比较的程序)
一段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,其格式及
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 }
~
这样就不会报错了。
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 }
~
这样就不会报错了。