使用逗号在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 它在结束第三行之前停止并退出。根据您的示例

我使用这段代码来解析C中的.csv文件。 如果字段采用此格式,则此选项有效
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;
}