Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 读取文件后动态存储数据_C_Json_Csv - Fatal编程技术网

C 读取文件后动态存储数据

C 读取文件后动态存储数据,c,json,csv,C,Json,Csv,我试图从一个用逗号分隔的文件中读取字符串,并希望在输出期间将结果显示并保存为特定格式(看起来像JSON格式) 我设法从文件中读取和显示数据,但未能以如下示例所示的格式动态显示数据。相反,它只是在结束前将整个字符串显示在一行中 e、 g 文件内容: 距离、50公里、时间、2小时、日期、2015年1月1日等 所需的输出结果: {"Distance":"50km"} {"Time":"2hrs"} {"Date":"1 Jan 2015"} 实际产出 {“文件的全部内容”:“此处不显示任何内容”

我试图从一个用逗号分隔的文件中读取字符串,并希望在输出期间将结果显示并保存为特定格式(看起来像JSON格式)

我设法从文件中读取和显示数据,但未能以如下示例所示的格式动态显示数据。相反,它只是在结束前将整个字符串显示在一行中

e、 g

文件内容:
距离、50公里、时间、2小时、日期、2015年1月1日等

所需的输出结果:

{"Distance":"50km"}
{"Time":"2hrs"}  
{"Date":"1 Jan 2015"}
实际产出
{“文件的全部内容”:“此处不显示任何内容”}

我已经注释掉了处理读取文件内容的行,直到它找到一个逗号,并以所需的格式打印结果,因为这些行工作不正常

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ( int argc, char *argv[] )
{     
  if ( argc != 2 )
  {    printf( "Insert filename you wish to open\n Eg: %s filename\n\n", argv[0] );
  }
 else
   {
    FILE *file = fopen( argv[1], "r" );

    if ( file == 0 )
    {
        printf( "There was an error opening the file\n\n" );
    }
    else
    {
        char a,b;
        while  ( ( a = fgetc( file ) ) != EOF )
        {
            printf( "%c", a,b );
//fscanf(file,"%[^,]",a);/* Read data until a comma is detected,  */
// printf("\nData from file:\n{\"%s\" : \"%s\"}\n\n",a,b); /* Display results into {"A":"B"} format */
        }
        fclose( file );
    }
  }
  return 0;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{     
如果(argc!=2)
{printf(“插入要打开的文件名\n例如:%s filename\n\n”,argv[0]);
}
其他的
{
FILE*FILE=fopen(argv[1],“r”);
如果(文件==0)
{
printf(“打开文件时出错\n\n”);
}
其他的
{
字符a,b;
而((a=fgetc(文件))!=EOF)
{
printf(“%c”,a,b);
//fscanf(文件“%[^,]”,a);/*读取数据直到检测到逗号*/
//printf(“\n文件中的数据:\n{\%s\:\%s\”}\n\n,a,b);/*将结果显示为{“a”:“b”}格式*/
}
fclose(文件);
}
}
返回0;
}
使用以下代码:

char a[50], b[50];
while(1 == fscanf(file," %[^,]",a) ) /* Read data until a comma is detected,  */
{
  fgetc( file ); // Ignore , character
  fscanf(file," %[^,]",b); /* Read data until a comma is detected,  */
  fgetc( file ); // Ignore , character
  printf("{\"%s\":\"%s\"}\n",a,b); /* Display results into {"A":"B"} format */
}

请注意
fscanf

要读取的算法是:

while( is reading [a] succesful )
{
  ignore comma
  read [b]
  ignore comma
  print {"a": "b"}
}

非常感谢你!:)