EOF 通过 scanf,返回值 -65

问题描述 投票:0回答:0

我需要在我的“系统编程实验室”中编写我的“strcmp”实现作为作业,这只是 C 课程的一个奇特名称。 当我测试代码与标准版本时,它在任何情况下都有效,除了在 EOF 时,它在标准版本中自动返回 -1,而在我的版本中,它将开始比较并相应地返回 0,1,-1。 我想写一个宏来处理这种情况。

我正在使用: VMware Workstation 17 Player 运行 Ubuntu 16.04(这些是 uni 的要求)。

我试过:

#define EOF_CHECK(s1, s2) 如果 ((s1)[0] == EOF || (s2)[0] == EOF ) 返回 -1; 和, #define EOF_CHECK(s1, s2) if ((s1)[0] == ' ' || (s2)[0] == ' ' ) return -1; 和, #define EOF_CHECK(s1, s2) if ((s1) == NULL || (s2) == NULL ) return -1;

他们都没有工作。 我打印scanf收到EOF后的值,结果是(-65)十进制。 这个宏确实有效: #define EOF_CHECK(s1, s2) if ((s1)[0] == -65 || (s2)[0] == -65 ) return -1; 但是我想避免幻数。

c ubuntu macros eof
© www.soinside.com 2019 - 2024. All rights reserved.