簡體   English   中英

C strcpy導致分段錯誤

[英]C strcpy causing segmentation fault

我有這個結構:

typedef struct occurrenceType Occurrence;

struct occurrenceType {
char* line;
int lineNumber;
int wordNumber;
Occurrence *next;

};

我正在嘗試使用以下方式創建鏈接列表:

inFile=fopen(argv[1],"r");
while(fgets(line,100,inFile)!=NULL) {
    if(strstr(line,argv[2])!='\0') {
            strcpy((*occur).line,line);
                (*occur).lineNumber=count;
                (*occur).next=(Occurrence*)malloc(sizeof(Occurrence));
                occur=(*occur).next;
        lineCount++;
    }
    count++;
}

該程序應該讀取程序的行並搜索在命令行中指定的字符串。 當找到匹配項時,將出現項添加到鏈接列表中。 除結構的“行”字段外,其他所有內容均正常運行。 使用strcpy進行填充時,會發生分段錯誤,但是

(*occur).line=line;

這不是一個可行的選擇,因為行指針在整個程序中都會改變。 任何人都可以建議另一種方法嗎? 謝謝!

您需要為行字段分配空間或使其成為實際的字符緩沖區。

如果要分配,請在代碼塊的strcpy上方添加以下行:

    occur->line = calloc( 1, 100 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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