簡體   English   中英

使用strsep讀取csv文件的分段錯誤

[英]Segmentation Fault using strsep reading a csv file

我目前正在嘗試使用 strsep 讀取 csv 文件,但它從未通過第一行

int main(){
    
    FILE *fp = fopen("users100.csv", "r");
    
    if(!fp){
        printf("Erro");
        return 0;
    }

    char *str;

    str = (char *) malloc(10240);


    while(fgets (str, 10240, fp) != NULL){
    
        char *tmp = strdup(str);
        char *token;
        char **sp = &str; 

        sp = &tmp;

        while(token = strsep(&str, ";")){
            
            printf("%s ", token);

        }

        putchar('\n');

    }

    free(str);

    fclose(fp);
    
    return 0;
}

這個程序的輸出是

public_repos id followers follower_list type following_list public_gists created_at following login
 
Segmentation fault (core dumped)

它打印第一行,但不打印其余行。

謝謝!

問題是在這個電話中

strsep(&str, ";")

指針str已更改。

對於初學者來說,重新初始化指針 sp 沒有多大意義。

    char **sp = &str; 

    sp = &tmp;

你應該寫

char *pos = tmp;
char **sp = &pos; 

在這個while循環中你需要寫

    while ( ( token = strsep( sp, ";" ) ) ){
        
        printf("%s ", token);

    }

然后你需要釋放兩個字符串

free( str );
free( tmp );

暫無
暫無

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

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