簡體   English   中英

ubuntu中C中的分段錯誤(核心轉儲)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM