我的文本文件包含4行数据。每行如下
Candies 2
Cookies -4
Soda 5
Milk 8
我必须读取C函数中的值(2,-4,5,8)并将它们存储在变量中。
我已经编写了以下代码,我被卡在XXXXXX所指示的位置。我不确定那里到底发生了什么。感谢您的帮助。
void function()
{
int count=0,value[4],length=0;
FILE *fp;
fp = fopen("file.txt","r");
if (fp == NULL)
{
fprintf(stderr, "Can't open file !\n");
exit(1);
}
char line[100];
for (count = 0; count < 4; count++)
{
if (fgets(line,sizeof(line),fp)==NULL)
break;
else
{
while(fp!="" && length<strlen(line))
{
fp++;length++
}
if(fp == "")
value[count]= XXXXXXXX;
}
}
答案 0 :(得分:0)
请不要增加fp
。它没有按照你的想法做到。
如果您想在现有C函数的帮助下完成此操作,只需在您的行中搜索空格(好吧,我在这里使用了isspace
和atoi
):
int pos = 0;
while( line[pos] != 0 && !isspace(line[pos]) ) pos++;
if( line[pos] != 0 ) {
line[pos++] = 0;
value[count] = atoi( &line[pos] );
printf( "Key: '%s' / Value: %d\n", line, value[count] );
}
或者您可以使用sscanf
...
int nread = sscanf( line, "%*s %d", &value[count] );
或者:
char key[100];
int nread = sscanf( line, "%s %d", key, &value[count] );
答案 1 :(得分:0)
void function()
{
int count=0,value[4],length=0;
FILE *fp;
fp = fopen("file.txt","r");
if (fp == NULL)
{
fprintf(stderr, "Can't open file !\n");
exit(1);
}
char line[100];
for (count = 0; count < 4; count++)
{
if (fgets(line,sizeof(line),fp)==NULL)
break;
else
{
sscanf(line,"%*s %d",&value[count]);
}
}
我修改了代码,你可以尝试一下。