首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用strsep读取csv文件的分段故障

使用strsep读取csv文件的分段故障
EN

Stack Overflow用户
提问于 2021-10-24 19:11:54
回答 1查看 46关注 0票数 1

我目前正在尝试使用strsep读取csv文件,但它从不通过第一行

代码语言:javascript
复制
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;
}

此程序的输出为

代码语言:javascript
复制
public_repos id followers follower_list type following_list public_gists created_at following login
 
Segmentation fault (core dumped)

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-24 19:21:36

问题是在这个调用中

代码语言:javascript
复制
strsep(&str, ";")

指针str已更改。

对于初学者来说,重新初始化指针sp没有多大意义。

代码语言:javascript
复制
    char **sp = &str; 

    sp = &tmp;

你应该写下

代码语言:javascript
复制
char *pos = tmp;
char **sp = &pos; 

在这个while循环中,您需要编写

代码语言:javascript
复制
    while ( ( token = strsep( sp, ";" ) ) ){
        
        printf("%s ", token);

    }

然后您需要释放这两个字符串

代码语言:javascript
复制
free( str );
free( tmp );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69699984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档