【发布时间】:2020-10-17 07:10:35
【问题描述】:
我正在学习流,并从教科书中复制了以下应用程序。当我的朋友在他的 Windows 机器上编译并运行时,它运行良好。当我在我的 Ubuntu 18.04 机器上运行应用程序时,输入工作正常,但这些值似乎对应用程序没有任何影响,即输入 0 不会导致程序退出。我的输出在代码下方。
在不同机器上编译时会导致不同的行为,为什么这在我的机器上不起作用?
int main(int argc, char* argv[]) { 文件 *fpt; 字符字节; long int where,move; 如果(argc!= 2) { printf("用法:文件搜索文件名\n"); 返回(0); } fpt = fopen(argv[1], "r"); 如果(fpt == NULL) { printf("无法打开文件 %s 进行读取\n", argv[1]); 返回(0); } 而(1) { 其中 = ftell(fpt); fread(&byte,1,1,fpt); fseek(fpt,-1,SEEK_CUR); printf("字节 %d: %d (%c)\n", where, byte, byte); printf("输入 #bytes (+ or -) 移动,或 0 退出:"); scanf("%d", &move); printf("移动: %d\n", 移动); 如果(移动 == 0) 休息; fseek(fpt,移动,SEEK_CUR); } fclose(fpt); }输出
jonathon@dev1:~/hoover/ch5/build$ ./fileseek text.txt
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: 0
move: 0
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: 1
move: 1
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: 2
move: 2
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: 3
move: 3
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: 4
move: 4
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: 5
move: 5
Byte 0: 84 (T)
Enter #bytes (+ or -) to move, or 0 to quit: ^C
【问题讨论】: