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

Kra*_*ken 1 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);
}  
Run Code Online (Sandbox Code Playgroud)

如果我的文本文件包含

1 123 karan
2 1234哈哈

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

并且在运行代码时它说
不能创建进程!
我究竟做错了什么?

cni*_*tar 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. */
                  ^
Run Code Online (Sandbox Code Playgroud)

否则你将把垃圾first视为地址,并会产生未定义的行为.另外,请注意格式first.string.

有一个C FAQ

为什么调用scanf("%d",i)不起作用?

传递给scanf的参数必须始终是指针:对于每个转换的值,scanf通过填充您传递指针的位置之一来"返回"它.