[英]segmentation fault(core dumped) in C in ubuntu
這是 main.c
這是print.c
#include <stdio.h>
int wc(FILE *pointer)
{
int a;
int character=0,word=0,line=0;
a = getc(pointer);
while ( a != EOF )
{
character++;
if (a == ' ')
word++;
if (a == '\n')
line++;
a = getc(pointer);
}
printf("character: %4d, word: %4d, line: %4d \n", character,word,line);
return 0;
}
這是word.c
gcc -c print.c
gcc -c word.c
gcc -c main.c
gcc -o main main.o print.o word.o
./main
text.txt
text.txt
segmentation fault (core dumped)
這是我使用的編譯方式。
但我不知道為什么我有分段錯誤(核心轉儲)。
請幫我。
在main()
,您應該通過查看返回值是否為NULL
來檢查fopen()
是否成功,在這種情況下會發生錯誤。
此外,使用的是argv[1]
即使條件argc>1
不滿足與第二fopen()
在main()
如果argc
小於2
,則argv[1]
將不存在。
在printfile()
的while
循環中, break
語句將在第一次迭代時執行。
因此,將while
變成if
語句並刪除break
將具有相同的效果。
在wc()
的while
循環中,
if (a == ' ')
word++;
if (a == '\n')
line++;
可以制作
if (a == ' ')
word++;
else if (a == '\n')
line++;
不需要檢查a
是否\\n
如果a
是 (空間)。
編輯:不要忘記在使用完畢后關閉所有打開的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.