簡體   English   中英

在C中進行文件處理:在文本文件的開頭和結尾處刪除空格

[英]File handling in C: Strip spaces at the beginning and end of text file

以下是讀取文件user.dat(附加在代碼后)並提取分別由“,”和“ \\ n”分隔的字符串和int值的函數。

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文本文件,以便刪除不需要的空白字符?

您可以預處理文件以排除僅包含空格字符的行。 例如,在Perl中,這將是:perl -ne“如果!/ ^ \\ s * $ /則打印” input.txt> output.txt

暫無
暫無

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

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