从文件中读取;无法创建流程

时间:2011-08-12 08:13:16

标签: c file-io

这是我的代码:

#include<stdio.h>

void main()
{
    FILE *fp;
    fp=fopen("text.txt","r");
    if(fp==NULL)
        printf("ahaha");

    struct karan{
        int index;
        int number;
        char string[10];
    };

    struct karan first;

    fscanf(fp,"%d %d %s",first.index,first.number,first.string);
    printf("%d %d %s",first.index,first.number,first.string);
}  

如果我的文字文件包含

1 123 karan
2 1234哈哈

当我编译代码时,它说 在定义之前可能先使用。

并运行代码说明了 无法创建流程!
我做错了什么?

1 个答案:

答案 0 :(得分:5)

您需要将&运算符与fscanf一起使用。

fscanf(fp,"%d %d %s",first.index,first.number,first.string); /* Wrong. */
fscanf(fp,"%d %d %9s", &first.index, &first.number, first.string); /* Right. */
                  ^

否则,您将first中的垃圾视为地址,并将导致未定义的行为。另外,请注意first.string的格式。

有一个C FAQ

  

为什么呼叫scanf(&#34;%d&#34;,i)不起作用?

     

传递给scanf 的参数必须始终是指针:对于每个参数   价值转换,scanf``返回&#39;&#39;通过填写其中一个   您已经通过指针的位置。