无法从.csv文件检索数据
我试图从逗号分隔的.csv文件中读取两个值。 这是我的test.csv:无法从.csv文件检索数据,c,scanf,C,Scanf,我试图从逗号分隔的.csv文件中读取两个值。 这是我的test.csv: 14,0.49 在做了一些研究之后,我发现这似乎与我的问题相似。以下是我的尝试: #include <stdio.h> #include <stdlib.h> int main() { float value_a; float value_b; FILE *fp = fopen("test.csv", "r"); char buffer_a[255]; char buff
14,0.49
在做了一些研究之后,我发现这似乎与我的问题相似。以下是我的尝试:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float value_a;
float value_b;
FILE *fp = fopen("test.csv", "r");
char buffer_a[255];
char buffer_b[255];
fscanf(fp, "%s%*c%s", buffer_a, buffer_b);
value_a = atof(buffer_a);
value_b = atof(buffer_b);
printf("value_a is %f", value_a);
printf("value_b is %f", value_b);
fclose(fp);
}
我的程序(fscanf()尤其如此)成功地检索到14,然后atof()如我所料将其转换为浮点,但第二个数字仅检索为0.0
为什么fscanf无法检索逗号后的第二个值
谢谢
%
s跳过前导空格,扫描非空格并在空格上停止。第一个%s
扫描14,0.49
到缓冲区a
这里有一种解决方法:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float value_a;
float value_b;
FILE *fp = fopen("test.csv", "r");
if (!fp)
{
perror("Could not open file");
return EXIT_FAILURE;
}
if (fscanf(fp, "%f,%f", &value_a, &value_b) != 2)
{
perror("Could not read the file");
return EXIT_FAILURE;
}
printf("value_a is %f\n", value_a);
printf("value_b is %f\n", value_b);
fclose(fp);
return EXIT_SUCCESS;
}
... 并检查
fscant
的返回值,以确保它已成功。请在搜索字符串中使用google withsite:stackoverflow.com
,以便将来进行研究。有数百篇关于fscanf for csv的帖子,以及它是如何无法正常工作的。谢谢!为什么fscanf(fp、%f、%f、&value\u a和&value\u b)!=2.在C中,零表示false right?@0x76syoa8p,因为返回值是成功分配的接收参数数,在本例中必须为2,否则表示某种错误/不匹配,
#include <stdio.h>
#include <stdlib.h>
int main()
{
float value_a;
float value_b;
FILE *fp = fopen("test.csv", "r");
if (!fp)
{
perror("Could not open file");
return EXIT_FAILURE;
}
if (fscanf(fp, "%f,%f", &value_a, &value_b) != 2)
{
perror("Could not read the file");
return EXIT_FAILURE;
}
printf("value_a is %f\n", value_a);
printf("value_b is %f\n", value_b);
fclose(fp);
return EXIT_SUCCESS;
}
value_a is 14.000000
value_b is 0.490000