如果我收到以下文件
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:?
它的效果非常好,我做错了什么? 编辑:抱歉误解,我试图翻译部分代码,使其更容易理解。
答案 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()文件分别为父母和子女提供