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