【发布时间】:2015-05-04 12:29:00
【问题描述】:
我有一个编程作业,它提供了一个数据文件“candidatesdata.txt” 您应该阅读信息并破译姓名、性别、身高和体重。唯一的问题是每个数据记录之间的名称和逗号都有引号。文件如下:
Name,Gender,Height,Weight
"Tanner, Mark C.”,M,71.8,180.25
"Jinglehiemmerschmitt, John J.”,M,70.75,185.3
"Parker, Sarah J.",F,65.25,120.3
..继续
如何读取数据记录并忽略引号和逗号? 这是我到目前为止所拥有的,它删除了一些逗号和引号,但在此过程中它也删除了名称。
#include <stdio.h>
struct candidateinfo
{
char name[50];
char gender;
double height;
double weight;
}candidate;
int main()
{
int count =0;
FILE *candidate_data;
// Open file
candidate_data = fopen("/Users/moisestrevino/Documents/CS 1324/Assignment #5/Assignment #5/candidatedata.txt","r");
fscanf(candidate_data, "%*[^\n]");
fgetc(candidate_data);
// Get rid of unecessary letters
while (count<40)
{
count++;
fscanf(candidate_data,"\"%[^\"],%c,%lf,%lf\n", candidate.name, &candidate.gender, &candidate.height, &candidate.weight);
printf("%s %c %lf %lf\n",candidate.name, candidate.gender, candidate.height, candidate.weight);
}
fclose(candidate_data);
return 0;
}
输出:
Tanner, Mark C. 0.000000 0.000000
,M,71.8,180.25
0.000000 0.000000
Jinglehiemmerschmitt, John J. 0.000000 0.000000
,M,70.75,185.3
0.000000 0.000000
Parker, Sarah J. 0.000000 0.000000
,F,65.25,120.3
0.000000 0.000000
Meeks, Kalvin R. 0.000000 0.000000
,M,57.25,210.2
cont...
【问题讨论】:
-
您必须首先阅读this。
-
另外请缩进你的代码
-
我应该改用EOF吗?
-
使用
fgetc()而不是fscanf()。 -
您的某些引号字符是非 ASCII 印刷引号 - 您是从 Word 文档中粘贴的吗?另外,引号的原因是名称字段内有逗号。