gpt4 book ai didi

代码立即停止响应(c、指针、文件 I/O)

转载 作者:行者123 更新时间:2023-11-30 18:54:58 25 4
gpt4 key购买 nike

我正在编写一个家庭作业代码,它使用函数和指针来读取文件并修复其中的大小写错误。

目标是读取预先写入的文件并修复它,在每行的开头添加行号。 (即标题 -> 1.标题)

我想我已经掌握了基本逻辑,但一定有一个我没有看到的错误,因为它在我编译并运行它后立即停止响应。

这是我的 main() 函数。

FILE *casefixer;

casefixer = fopen("casefixer.txt", "r+");

char* ch;
int* char_in_word;
int* line_num;
*char_in_word = 0;
*line_num = 1;

while((fscanf(casefixer, "%c", ch)) != EOF){

fscanf(casefixer, "%c", ch);

fprintf(casefixer, "%d. ", *line_num);

if(fix_caps(ch, char_in_word, line_num))
fprintf(casefixer, "\n");

fix_caps(ch, char_in_word, line_num);

fprintf(casefixer, "%c", *ch);
}
fclose(casefixer);

最佳答案

char* ch;          // uninitialized
int* char_in_word; // -||-
int* line_num; // -||-
*char_in_word = 0; // dereferencing uninitialized pointer - undefined behavior
*line_num = 1; // -||-

当您在函数声明中看到指针时,不必使用它们。如果您确定该函数不会存储它们或尝试为它们分配新内存,请获取常规变量的地址:

char ch;
fscanf(casefixer, "%c", &ch) // ch is on stack longer than fscanf, everything's OK

关于代码立即停止响应(c、指针、文件 I/O),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29188727/

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