我在printf statment
中的insert函数中遇到Segmentation错误#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
感谢。
答案 0 :(得分:1)
分配的内存只有28个字节,其中尝试复制256个字节。
char line[28]; <-- 28 bytes only allocated to line.
while(!feof(fp)){
fgets(line, 256, fp); <-- 256 bytes read into line.
增加line
的内存以避免此问题。