Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C getline()在读取文本文件时读取垃圾值_C_Getline_Garbage - Fatal编程技术网

C getline()在读取文本文件时读取垃圾值

C getline()在读取文本文件时读取垃圾值,c,getline,garbage,C,Getline,Garbage,在下面的代码中,我想读取第一行为的文本文件,->。代码片段如下所示: ssize_t read; size_t len = 200; FILE *fptr; fptr = fopen(fn ,"r"); if(fptr==NULL){ printf("Error\n"); fclose(fptr); } else{ int line_number=1; char * line = (char *)malloc

在下面的代码中,我想读取第一行为的文本文件,
->
。代码片段如下所示:

    ssize_t read;
size_t len = 200;
FILE *fptr;
fptr = fopen(fn ,"r");


if(fptr==NULL){
    printf("Error\n");
    fclose(fptr);
}

else{
    int line_number=1;

    char * line = (char *)malloc(sizeof(char)*200);
    while((read = getline(&line, &len, fptr)) != -1)
    {
        char * tokens = strtok(line, " \t\n");
        
        
        while( tokens != NULL ) 
        {
            
            printf("%s \n",tokens);
            printf("%zu \n",strlen(tokens));
            
            tokens = strtok(NULL, " \t\n");
            
        }
        

    }
}

但是,在中使用
getline()
读取它,然后使用
strtok()
拆分字符串时,第一个标记应该是大小为3的
,但正在读取的字符串是一些不可见的字符,后跟
,长度为6。你能告诉我是什么问题吗?谢谢大家!

该文件可能以UTF8 BOM开头。如果是这样,您应该将该文件读取为UTF-8。

该文件可能以UTF8 BOM开头。如果是这样的话,您应该将文件读取为UTF-8。

哪里是“以下代码”?请发布一个。我编辑了问题以包含代码,但问题似乎已关闭。“以下代码”在哪里?请发布一个。我编辑了问题以包含代码,但问题似乎已结束。这是我使用sublime创建的文本文件,我如何知道它是否以UTF BOM开头?--文件的保存方式决定了如何解释c中的字符。不要假设“char”与文本字符相同。这只是7位ASCII编码的文本的情况,它排除了世界上大多数文本。另请参见:这是我使用sublime创建的文本文件,如何知道它是否以UTF BOM开头?--文件的保存方式决定了如何解释c中的字符。不要假设“char”与文本字符相同。这只是7位ASCII编码的文本的情况,它排除了世界上大多数文本。另见: