使用逗号在c中解析.csv文件时出现问题
我使用这段代码来解析C中的.csv文件。 如果字段采用此格式,则此选项有效使用逗号在c中解析.csv文件时出现问题,c,parsing,C,Parsing,我使用这段代码来解析C中的.csv文件。 如果字段采用此格式,则此选项有效 ENTRY1、ENTRY2、ENTRY3、ENTRY4 或者,即使此处有逗号: ENTRY1、ENTRY2、ENTRY3、ENTRY4 但是,如果在条目之后和逗号之前有空格,程序将崩溃。像这样:ENTRY1、ENTRY2、ENTRY3、ENTRY4 代码: 输出为: ENTRY1 ENTRY2 ENTRY3 ENTRY4 ENTRY5 ENTRY6 ENTRY7 ENTRY8 它在结束第三行之前停止并退出。根据您的示例
ENTRY1、ENTRY2、ENTRY3、ENTRY4
或者,即使此处有逗号:
ENTRY1、ENTRY2、ENTRY3、ENTRY4
但是,如果在条目之后和逗号之前有空格,程序将崩溃。像这样:ENTRY1、ENTRY2、ENTRY3、ENTRY4
代码:
输出为:
ENTRY1 ENTRY2 ENTRY3 ENTRY4
ENTRY5 ENTRY6 ENTRY7 ENTRY8
它在结束第三行之前停止并退出。根据您的示例和预期输出,我更愿意使用
fgetc
就地处理输入字符
这将允许我们解析和拒绝不需要的字符,从而避免存储数据的开销,如在fgets
中,然后解析存储的数据
结果(fputc
)也可以指向一个文件
代码如下所示……希望这有帮助
#include <stdio.h>
int main()
{
FILE *input_fp =fopen("file", "r");
int c;
while ((c=fgetc(input_fp)) != EOF)
{
if(c == ' ' || c == '\t')//if space or tab
; //do nothing
else
fputc(c,stdout); //print c
}
fclose(input_fp);
return 0;
}
#包括
int main()
{
文件*input_fp=fopen(“文件”,“r”);
INTC;
while((c=fgetc(input_fp))!=EOF)
{
if(c=''| | c='\t')//if空格或制表符
;//什么也不做
其他的
fputc(c,stdout);//打印c
}
fclose(输入\ fp);
返回0;
}
void main
?当然intmain
Oops。我通常使用void main
。我尝试使用返回0
和int main
,结果相同。因此,我编辑了代码,以确保其他人不会感到困惑,就好像这是错误一样。谢谢虽然它在这里似乎无关紧要,但C只提供了一些有效的main()
定义,而void main()
不是其中之一。那么,你的问题是什么?这:VFMT“,“
如果逗号前有空格,则不匹配。哦,我现在看到问题了。但是,还有什么方法可以解析该文件?我需要从结果中排除所有空格和逗号
ENTRY1 ENTRY2 ENTRY3 ENTRY4
ENTRY5 ENTRY6 ENTRY7 ENTRY8
#include <stdio.h>
int main()
{
FILE *input_fp =fopen("file", "r");
int c;
while ((c=fgetc(input_fp)) != EOF)
{
if(c == ' ' || c == '\t')//if space or tab
; //do nothing
else
fputc(c,stdout); //print c
}
fclose(input_fp);
return 0;
}