C中的文件处理:在文本文件的开头和结尾处删除空格

时间:2014-10-26 23:43:52

标签: c formatting file-handling

以下是一个函数,它读取文件user.dat(附在代码后面)并提取字符串和由","分隔的int值。和" \ n"分别

void getUsers()
{
     int i, t;
     char *token1, *u;
     FILE *fu = fopen("user.dat", "r");
     const char s[2] = ", ";
     if(fu != NULL)
     {
        char line1[20];
         while(fgets(line1, sizeof line1, fu) != NULL)
         {
             token1 = strtok(line1, s);
             for(i=0;i<2;i++)
             {
                 if(i==0)
                 {  
                     u = token1;
                     token1 = strtok(NULL,s);
                 } else {
                     t=atoi(token1);
                 }      
             }
             addOuterNode(u,t);
         }
         printOuterNode();
         fclose(fu);
     } else {
         perror("user.dat");
     }
}

user.dat文件如下:

1000, 76
0095, 81
2910, 178
0001, 1
<EOF>

如果维持上述格式,程序可以正常工作。

但是当遇到杂散空格或换行符时,我遇到了问题(SIGSEGV通常将* u和t值发送到将它们插入到链表/嵌套链表的节点中的void *数据元素中的函数)文件。例如:

<newline>
1000, 76
 <space>
0095, 81
2910, 178
0001, 1
 <space><newline>
<newline>
<EOF>

您是否可以帮我预处理user.dat文本文件,以便删除不需要的空白字符?

1 个答案:

答案 0 :(得分:0)

您可以预处理文件以排除仅包含空格字符的行。例如。在Perl中,这将是:     perl -ne&#34;打印if!/ ^ \ s * $ /&#34; input.txt&gt; output.txt的