从C中的文件中读取特定字段

时间:2015-11-22 21:48:44

标签: c string file scanf

如果我收到以下文件

    for (i=0; i<n; i++) {
    ret = fork();
    if (ret == 0) {
                fscanf(fstation,"%d %s %d",id, station, num);
                printf("Identifier is %d %s %d \n",id,station,num);


                exit(0);


        }else{wait(&st);}



        }

我想读取第一行和最后一行的数据。我试过这个:

Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0
Identifier is 0   0

输出就是这个。

server asks:?

它的效果非常好,我做错了什么? 编辑:抱歉误解,我试图翻译部分代码,使其更容易理解。

2 个答案:

答案 0 :(得分:0)

从fscanf扫描的所有内容都需要取消引用。

fscanf(fstation,"%d %s %d",id, station, num);

在这种情况下,fscanf中的“id”和“num”作为普通变量,它会将存储在变量中的值视为发送新信息的地址。为了将新信息存储在您想要的变量中,您需要为fscanf提供这些变量的地址。这可以使用&号(&amp;)来完成。

fscanf(fstation,"%d %s %d", &id, station, &num);
然而,

字符串不必以这种方式完成,因为它们已经是指向地址(字符数组)的指针。所以在这种情况下,'station'可以没有&符号。

答案 1 :(得分:0)

stackoverflow上的其他问题/答案似乎有关。答案是,您需要在分叉()之后 fopen()文件分别为父母和子女提供

writing and reading within a fork - C