gpt4 book ai didi

c - C 中的 "Always wrong"代码片段列表

转载 作者:行者123 更新时间:2023-11-30 20:12:15 25 4
gpt4 key购买 nike

今天正在与一位同事讨论单点错误 - 即代码中的错误(或者至少是应该敲响警钟的模式),一个体面的程序员应该能够一眼就发现,例如

x = malloc (strlen(y));

while (!feof (f)) {
...
}

char *f(){
char x[100];
...
return x;
}

谁有类似的此类模式片段?我建议任何已经使用过 SO 一段时间的人都会有他个人最喜欢的那些

最佳答案

char *buf;
scanf("%s", buf);

这是错误的,因为没有为 buf 分配内存。

char buf[100];
scanf("%s", &buf);

这是错误的,因为 scanf 需要一个 char *,而不是 char (*)[n]

char c;
while ((c = getchar()) != EOF)
putchar(c);

这是错误的,因为 EOF 不适合 char 的范围。请改用 int

fflush(stdin);

fflush 对于输入流未定义,例如 stdin,尽管它在某些编译器(例如 Microsoft C)中作为扩展实现。

#define IN 0;

不要在#define末尾添加分号。

blk = realloc(blk, n);

如果realloc失败,blk中的所有内容都将丢失,因为realloc将返回NULL。为了解决这个问题,将返回值复制到临时文件中,并且只有当临时文件不为NULL时,才复制到最终目的地。

关于c - C 中的 "Always wrong"代码片段列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com