gpt4 book ai didi

c - 字计数器中的段错误

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

程序将一个文件分开,并逐一打印单词,但是当我编译并运行它时,它说段错误。

主要部分:

char * w;
int Counter = 0;
while ( (w = nextword(fd)) != NULL) {
printf("%d: %s\n", Counter, w);
Counter++;
}
printf("words total = %d\n", Counter);

函数下一个单词:

char * nextword(FILE * fd) {
int c;
int i;
c = fgetc(fd);
while (c != -1 ) {
while ( (c != ' ') && ( c != '\n')) {
word[wordLength] = c;
wordLength++;
}
return word;
wordLength = 0;
}

最佳答案

这就是导致问题的原因:

return word;
wordLength = 0;

一旦返回,就永远不会到达 wordLength = 0; 语句。

将其移至函数顶部以修复您的实现。

更好的实现是使用临时缓冲区,而不是全局缓冲区。例如,您可以这样做:

size_t nextword(FILE * fd, char buf[], size_t max_len) {
size_t len = 0;
... // Read data into buf up to max_len-1.
// Then add null terminator, and return length.
// When you return length of zero, it means the end of input
return len;
}

调用者会像这样调用你的函数:

char w[100];
while ( nextword(fd, w, 100) != 0) {
printf("%d: %s\n", Counter, w);
Counter++;
}

关于c - 字计数器中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28349835/

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