警告:函数的隐式声明‘;获取’;;你是说‘;fgets’;?[-Wimplicit函数声明]
我刚刚开始我的编程之旅。我在Ubuntu终端上编写代码。在编译使用警告:函数的隐式声明‘;获取’;;你是说‘;fgets’;?[-Wimplicit函数声明],c,C,我刚刚开始我的编程之旅。我在Ubuntu终端上编写代码。在编译使用get()函数的程序时,我遇到了一个问题 #include<stdio.h> /*example of multi char i/p function*/ void main() { char loki[10]; gets(loki); printf("puts(loki)"); } 在Ubuntu上,在终端上运行manget。它应该向您显示手册页 该文件以书面英语说明: 切勿使用此功能。
get()
函数的程序时,我遇到了一个问题
#include<stdio.h>
/*example of multi char i/p function*/
void main()
{
char loki[10];
gets(loki);
printf("puts(loki)");
}
在Ubuntu上,在终端上运行
manget
。它应该向您显示手册页
该文件以书面英语说明:
切勿使用此功能。
更一般地说,<>强>编程之前,阅读文档。对于Linux上的C,考虑阅读,这个,许多C编程,以及C11标准。 英文维基百科也是如此
最后, 警告:“函数“gets”的隐式声明”;你是说“fgets”吗?[-Wimplicit函数声明] 对我来说似乎很清楚,因为是用英语写的。根据经验,确保您的程序在编译时没有警告。也请阅读 你可能对理解缩略语感兴趣 我(1985年)通过阅读SunOS3手册(当时在纸上,在工作中,与我当时有幸使用的Sun3/160工作站一起出售)从第1节到第9节学习了C和Unix编程 你可以在手册页之前阅读我刚刚开始我的编程之旅 那么我推荐阅读。在我祖父的眼中,即使在2019年,它仍然是编程的最佳入门。另见。不管SICP是否使用了一些在专业现实生活中不太常用的编程语言(但要深入了解):编程是关于概念的,而不是关于编码。您将通过SICP学习的概念肯定会帮助您以后编写更好的C代码。当然读了
注意。我是法国人(生于1959年),所以不是以英语为母语的人。但是我在读博士的时候,当然在高中的时候,还有我自己的父母教我读书。当我在大学教一些CS课程时,我告诉学生的第一件事就是阅读。永远不要为阅读感到羞耻。
get
在C11中被删除,因为它是gets
不知道它可以在数组中存储多少个字符,并继续按照用户提供的数量写入,这导致程序具有未定义的行为—崩溃、修改无关数据等
修复方法是使用fgets
,但要记住,它会在缓冲区中留下一个换行符:
#include <stdio.h>
// example of multi char i/p function
int main(void)
{
char loki[10];
fgets(loki, 10, stdin);
// now loki will have the new line as the last character
// if less than 9 characters were on the line
// we can remove the extra with `strcspn`:
loki[strcspn(loki, "\n")] = 0;
// this will print the given string followed by an extra newline.
puts(loki);
}
#包括
//多字符i/p函数示例
内部主(空)
{
char-loki[10];
fgets(洛基,10岁,标准膳食);
//现在洛基将以新行作为最后一个角色
//如果行中少于9个字符
//我们可以用“strcspn”删除多余的内容:
loki[strcspn(loki,“\n”)]=0;
//这将打印给定字符串,后跟一个额外的换行符。
普茨(洛基);
}
在Ubuntu上,用一个终端运行mangets
,gets
函数已从标准库中删除!(在旧版本中有,但被宣布为“危险”,随后被删除。)你应该使用fgets(loki,10,stdin)按照编译器的“建议”进行编码>。进一步编程的小技巧:确保main
函数的返回类型为int
,并在成功退出时返回0:)如果您正在阅读一本使用void main
的书,您应该阅读
#include <stdio.h>
// example of multi char i/p function
int main(void)
{
char loki[10];
fgets(loki, 10, stdin);
// now loki will have the new line as the last character
// if less than 9 characters were on the line
// we can remove the extra with `strcspn`:
loki[strcspn(loki, "\n")] = 0;
// this will print the given string followed by an extra newline.
puts(loki);
}