以下是讀取文件user.dat(附加在代碼後面)並提取由「,」分隔的字符串和int值的函數,以及「\ n」。文件處理C:文本文件開頭和結尾的條空間
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文本文件,以便我可以刪除不需要的空白字符嗎?
檢查:標記爲「」「(或NULL)。 – BLUEPIXY 2014-10-26 23:49:43
@BLUEPIXY使用if-else語句或istoken()預定義函數? – 2014-10-26 23:54:43
用你最喜歡的方式 – BLUEPIXY 2014-10-27 00:10:44