【发布时间】:2021-12-28 06:44:54
【问题描述】:
我的代码遇到问题,当我尝试在 linux 终端中以此处所示的交互模式执行时,它工作得非常好 enter image description here
但是当尝试以批处理模式执行时,我从程序中得到了一个意外的行为,我不知道它到底是不是像这样的地址 enter image description here
mydata.txt 分别包含 7 2 作为和 b 的值
#include<stdio.h>
int main(void){
int a, b;
printf("Enter Value of a, b ");
scanf("%d %d", &a , &b);
int temp = a;
a = b;
b = temp;
printf("\nAfter Swapping: a = %d, b = %d\n", a, b);
return (0);
}
【问题讨论】:
-
您没有检查
scanf的返回值,因此您不知道在例如之前是否将值分配给a和b输入流的 EOF。 -
您的 mydata.txt 文件是否以行尾结尾?
-
请不要张贴错误截图,复制粘贴为文本。你的输入文件包含什么?使用
cat yourfile将其转储到屏幕上。 -
Microsoft 曾经将实际字符
0x1A作为文本文件的文件结束标记,但现在通常没有这样的东西。 C 函数返回的EOF是一个标志,而不是实际数据。在文本编辑器中打开您的文本文件mydata.txt,然后将其内容复制/粘贴到问题中。此外,使用字节查看器检查您的文件,看看是否有任何意外的流氓非打印字符。 -
根据定义,您的文件以文件结尾结束。