繁体   English   中英

printf语句中的分段错误

[英]Segmentation fault inside printf statement

我在printf语句中的插入函数中遇到分段错误

#include <stdio.h>
#include <stdlib.h>
void Insert(char w[])
{
int j;
int n=5;
printf("word is %s AFTER\n", w);
}


int main(int argc, char *argv[])
{
        FILE *fp;
        if (argc !=2)
                fp=fopen("words.txt", "r");
        else
                fp=fopen(argv[1], "r");
        char line[28];
        while(!feof(fp)){
                fgets(line, 256, fp);
                Insert(line);
        }
}

在word.txt中,每行仅是一堆单词,即

apple
banana
...
zoo

(...只是表示中间的一堆单词),它显示以下内容:

word is apple
AFTER
word is banana
AFTER
...(a bunch more repetitions)                                    
word is cookie
Segmentation Fault(core dumped)

为什么会出现细分错误? 它完美地印了这个词。 它没有打印AFTER

谢谢。

分配的内存只有28个字节,试图复制256个字节。

char line[28]; <-- 28 bytes only allocated to line.
        while(!feof(fp)){
                fgets(line, 256, fp); <-- 256 bytes read into line.

增加内存为line ,以避免此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM