【发布时间】:2016-02-24 22:41:37
【问题描述】:
如果我得到以下文件
1 station1 1
2 station2 2
3 station3 3
4 station4 4
5 station5 5
6 station6 6
7 station7 7
8 station8 8
9 station9 9
10 station10 10
我想读取第一行和最后一行的数据。我试过这个:
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
效果不是很好,我做错了什么? 编辑:很抱歉造成误解,我尝试翻译部分代码以使其更易于理解。
【问题讨论】:
-
fscanf 应该被赋予指向 id、station 和 num 的指针(即 &id、&ststion、&num)。顺便说一句,你为什么要分叉?
-
指针结果相同,我使用 fork 因为我为每一行处理子进程。
-
你能告诉我们新代码吗?顺便说一句,输出与 printf 不匹配。
-
请发帖Minimal Complete and Verifiable Example。事实上,您的代码和描述没有正确关联。所以很难说某些事情是你代码中的真正错误还是只是拼写错误。例如,
fscanf暗示station存储一个字符串。然而printf将其打印为 int。那么哪个是对/错?您甚至没有显示station或任何其他变量的定义。