【发布时间】:2017-08-18 19:57:42
【问题描述】:
我正在尝试编写一个使用系统调用(read 和write)获取输入和输出的 C 程序。但是,我也想使用sscanf 进行转换。程序将输入一个开始值和结束值,并将计数到该结束值。我正在尝试使用sscanf 进行转换。
int main(int argc, char **argv){
char beg[5];
char stop[5];
int i, start, end;
write(1, "Starting value: ", 16);
read(0, beg, 4);
sscanf(beg,"%d",&start);
write(1, "Ending value: ", 14);
read(0, stop, 4);
sscanf(stop,"%d",&end);
int dif = end - start;
if (dif >= 0){
for (i = start; i <= end; i++){
write(1, &i, sizeof(i));
}
write(1, "\n", 1);
}
return 0;
}
期望的输出:
Starting value: 1
Ending value: 4
1 2 3 4
但是,计数不会打印任何内容(如果我使用 printf("%d ", i);,它会起作用)
【问题讨论】:
-
read(0, beg, 4);beg 不是以 NUL 结尾的。 [缓冲您的输入]
标签: c io system-calls scanf