gpt4 book ai didi

c - C 中的文件处理 : Strip spaces at the beginning and end of text file

转载 作者:行者123 更新时间:2023-11-30 17:26:56 25 4
gpt4 key购买 nike

以下函数读取文件 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 "打印 if!/^\s*$/"输入.txt > 输出.txt

关于c - C 中的文件处理 : Strip spaces at the beginning and end of text file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26579289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com