与getchar()putchar()相关的C编程(初学者帮助)
我是C语言编程新手,我想弄清楚,一个看似愚蠢的疑问 代码: 这应该只返回我输入的值…但是相应地…当我输入0时它不应该终止吗?如果不是……while下面的陈述到底意味着什么?与getchar()putchar()相关的C编程(初学者帮助),c,while-loop,getchar,putchar,C,While Loop,Getchar,Putchar,我是C语言编程新手,我想弄清楚,一个看似愚蠢的疑问 代码: 这应该只返回我输入的值…但是相应地…当我输入0时它不应该终止吗?如果不是……while下面的陈述到底意味着什么? 任何帮助都将不胜感激:)EOF意味着,例如,当你在linux中点击ctrl+d时,它发送EOF信号,它不一定是0 EOF意味着,例如,当你在linux中点击ctrl+d时,它会发送EOF信号,而不一定是0 函数返回输入的ASCII值(48表示零,或'0'),或头文件中名为EOF的值(通常为-1) 因此,如果您希望在EOF(正
任何帮助都将不胜感激:)
EOF
意味着,例如,当你在linux中点击ctrl+d
时,它发送EOF
信号,它不一定是0
EOF
意味着,例如,当你在linux中点击ctrl+d
时,它会发送EOF
信号,而不一定是0
函数返回输入的ASCII值(48表示零,或'0'
),或头文件
中名为EOF
的值(通常为-1)
因此,如果您希望在EOF(正确的EOF,而不是您定义的EOF)上停止,或者如果用户写入零,那么这将更好地工作:
#include <stdio.h>
int main()
{
int c = getchar();
while (c != EOF && c != '0')
{
putchar(c);
c = getchar();
}
return 0;
}
#包括
int main()
{
int c=getchar();
而(c!=EOF&&c!=“0”)
{
普查尔(c);
c=getchar();
}
返回0;
}
函数返回输入的ASCII值(48表示零,或'0'
),或头文件
中名为EOF
的值(通常为-1)
因此,如果您希望在EOF(正确的EOF,而不是您定义的EOF)上停止,或者如果用户写入零,那么这将更好地工作:
#include <stdio.h>
int main()
{
int c = getchar();
while (c != EOF && c != '0')
{
putchar(c);
c = getchar();
}
return 0;
}
#包括
int main()
{
int c=getchar();
而(c!=EOF&&c!=“0”)
{
普查尔(c);
c=getchar();
}
返回0;
}
EOF
当然不是0
(也不是'0'
,字符文字等于48)。它根本不是字符stdio.h
(您应该是#包括-ing!)将其定义为-1
。它表示您正在读取的任何文件中都没有更多数据。它不是流中的一个字节,而是io库指示它已完成的方式
getchar
需要返回int
的全部原因是,文件结束指示符不可能是文件中的有效字节
其他函数表示达到EOF的方式不同:fgets()
返回NULL
read()
返回读取的字节数,返回0,表示无法读取任何内容。EOF
肯定不是0
(也不是'0'
,字符文本等于48)。它根本不是字符stdio.h
(您应该是#包括-ing!)将其定义为-1
。它表示您正在读取的任何文件中都没有更多数据。它不是流中的一个字节,而是io库指示它已完成的方式
getchar
需要返回int
的全部原因是,文件结束指示符不可能是文件中的有效字节
其他函数表示达到EOF的方式不同:fgets()
返回NULL
read()
返回读取的字节数,返回0,表示无法读取任何内容。当您输入0
时,它实际上不是零,只是0
。它的数值为48,可通过printf(“%d\n”,“0”)进行验证代码>,打印48。EOF
是一个实际的零,也就是说,它的表示形式本质上是零。当您输入0
时,它实际上不是零,只是0
。它的数值为48,可通过printf(“%d\n”,“0”)进行验证代码>,打印48。EOF
是一个实际的零,也就是说,它的表示形式本质上是零。当你输入“0”时,它读取的是ASCII字符“0”,而不是数字值。当你输入“0”时,它读取的是ASCII字符“0”,而不是数字值。谢谢,我在基本知识中弄混了:)谢谢,我在基本知识中弄混了:)谢谢,但我想用我想要的…我应该用#定义“0”而不是仅仅0:)谢谢,但我想用我想要的…我应该用#定义“0”而不是仅仅0:)@Aki没问题仅供参考:@Aki无问题;)供参考: