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