2012-11-30 35 views
0

我的朋友和我工作的一个项目,我们需要在C读取文件用C

从文件中读取输入

文件看起来是这样的:

15 25 200 
3 10 
17.99 22.99 109.99 
100 2 4 
5.99 99.99 20.00 49.99 
10 10 10 10 10 10 10 10 10 10 
3.99 5.99 7.99 8.00 5.00 5.00 5.00 6.00 7.00 9.99 
5 

我需要逐行读取文件,并将每个值设置为不同的变量。例如,第一行的第一个值必须设置为变量preSalePrices,第二个值doorPrices和第三个preSales。我需要帮助弄清楚如何在每行上指定数值。例如,如何让程序在第一行中获得三个值,但在第二行中只有两个值?然后是第五行的四个值,依此类推。

这里是我的代码,但它只是崩溃:

int main() { 
    float preSalePrices, doorPrices; 
    int preSales; 
    FILE *fp; 
    fp = ("C://Users//Jake//Desktop//Charity Ball//auction01.txt", "r"); 

    while(fscanf(fp, "%f %f %i", &preSalePrices, &doorPrices, &preSales) != EOF) { 
     printf("%f, %f, %i", preSalePrices, doorPrices, preSales);    
    } 
} 

我看了所有在互联网上,我无法找到与此相关的具体事情。

+0

不会像这样将整行扫描到变量中 - 一次只读取每行一个变量。 – cegfault

+0

读取一行,使用空格作为分隔符分割它。请参阅http://www.cplusplus.com/reference/cstring/strtok/ – peacemaker

+0

由于您的代码缺少对fopen()的调用,因此您应该收到编译警告。你也应该检查'fopen()'的返回值,虽然这个测试对于函数调用没有帮助 - 'fp'得到一个非空指针''r“'。 –

回答

2

如果您始终知道每行中值的数量,则可以忽略行尾并逐个读取值。

如果行结束很重要,最简单的方法是分别读取每行(例如fgets),然后从那里读取数据,使用sscanf