【发布时间】:2013-03-09 01:59:43
【问题描述】:
假设我有一个文件看起来像这样
51.41 52.07 52.01 51.22 50.44 49.97 Coal Diggers
77.26 78.33 78.29 78.12 77.09 75.74 Airplane Flyers
31.25 31.44 31.43 31.09 31.01 30.92 Oil Fracting and Pumping
52.03 12.02 12.04 22.00 31.98 61.97 Big Bank
44.21 44.32 44.29 43.98 43.82 43.71 Rail Container Shipping
93.21 93.11 93.02 93.31 92.98 92.89 Gold Bugs
我想使用 fscanf 读取这个文件中的单词,将数字放入浮点数组中,将单词放入字符串数组中。但是,经过几个小时的艰苦思考,我仍然无法弄清楚如何解决这件事。
void dataInsert (COMPANY* company1, COMPANY* company2, COMPANY* company3, COMPANY* company4, COMPANY* company5, COMPANY* company6)
{
//Function Declaration
FILE* spData;
float number;
char* name[20];
//Statement
if ((spData = fopen("dataFile","r")) == NULL)
{
fprintf(stderr, "ERROR OPENING!!");
exit (1);
}
int i = 0;
int numCount = 0;
int lineCount = 0;
while (fscanf(spData, "%f", &number) != EOF)
{
if(isdigit(number))
{
if (lineCount == 0)
{
company1 -> stock_price[i] = number;
}
else if (lineCount == 1)
{
company2 -> stock_price[i] = number;
}
else if (lineCount == 2)
{
company3 -> stock_price[i] = number;
}
else if (lineCount == 3)
{
company4 -> stock_price[i] = number;
}
else if (lineCount == 4)
{
company5 -> stock_price[i] = number;
}
else if (lineCount == 5)
{
company6 -> stock_price[i] = number;
}
numCount++;
i++;
if (numCount == 6)
{
lineCount++;
numCount = 0;
i = 0;
}
}
}//while
fclose (spData);
}//dataInsert
我不知道如何处理每行末尾的字符串。我想把这些字符串放在结构公司-> 名称 [10] 中。这些数据在一个文本文件中。
【问题讨论】:
-
您确定要将值读取为整数而不是浮点吗?另外,请告诉我们what you have tried。
-
这些是文件中的实际
<br>标签吗?这个文件是 XML 还是 HTML 还是什么?也许您应该使用解析库?如果文件正是您在此处显示的格式,则可以使用 C 对其进行解析,但脚本语言会更容易... Python 将是我的选择。 -
您的文件总是这样组织吗?字符串前面有相同数量的数字吗?或者你必须检测你正在阅读的内容是数字还是字符串?
-
scanf 不是一种非常可靠的文件读取方式,因为即使格式有所改变,它也会失败。
-
@Douglas B. Staple 那你有什么推荐的?