gpt4 book ai didi

c - 从文本文件中读取字符串和整数

转载 作者:太空狗 更新时间:2023-10-29 16:08:12 25 4
gpt4 key购买 nike

假设我有一个这样的文件

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 读取这个文件 word,将数字放入 float 组中,将单词放入字符串数组中。但是,经过几个小时的苦思冥想,我仍然想不出如何解决这个问题。

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] 中。这些数据在一个文本文件中。

最佳答案

我建议使用 fgets 而不是使用 fscanf 来获取行。然后在该行上使用 sscanf 获取数值,并搜索第一个字母字符以了解字符串的开始位置(例如使用 strspn )。

像这样:

char line[256];

while (fgets(line, sizeof(line), fp) != NULL)
{
/* Get the numbers */
float numbers[6];
sscanf(line, "%f %f %f %f %f %f",
&numbers[0], &numbers[1], &numbers[2],
&numbers[3], &numbers[4], &numbers[5]);

/* Where do the numbers end... */
size_t numbers_end = strspn(line, "1234567890. \t");

/* And get the name */
char *name = line + numbers_end;

/* Do something with the numbers and the name */
}

关于c - 从文本文件中读取字符串和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com