C 程序在while循环后停止运行
所以,自从我上次用C编程已经有一段时间了,现在我正试图重新回到C,但是我的程序有问题。该程序非常简单,我使用getchar将字符存储在一个字符数组中,但由于某种原因,该程序在while循环后停止运行C 程序在while循环后停止运行,c,C,所以,自从我上次用C编程已经有一段时间了,现在我正试图重新回到C,但是我的程序有问题。该程序非常简单,我使用getchar将字符存储在一个字符数组中,但由于某种原因,该程序在while循环后停止运行 #include <stdio.h> #define MAXLINE 1000 int main(){ char c; char input[MAXLINE]; int i = 0; while((c = getchar()) != EOF){
#include <stdio.h>
#define MAXLINE 1000
int main(){
char c;
char input[MAXLINE];
int i = 0;
while((c = getchar()) != EOF){
input[i] = c;
++i;
}
printf("Still running");
}
#包括
#定义MAXLINE 1000
int main(){
字符c;
字符输入[MAXLINE];
int i=0;
而((c=getchar())!=EOF){
输入[i]=c;
++一,;
}
printf(“仍在运行”);
}
因此,我的程序不会打印“仍在运行”。发送EOF(Ctrl+D代表*nix Ctrl+Z代表Win),它将显示仍在运行的
root@Linux-VirtualBox:~/program/progEdit# ./stktest.o
sdf
fdf
sdf
Still runningroot@Linux-VirtualBox:~/program/progEdit#
发送EOF(Ctrl+D代表*nix Ctrl+Z代表Win),它将显示仍在运行的
root@Linux-VirtualBox:~/program/progEdit# ./stktest.o
sdf
fdf
sdf
Still runningroot@Linux-VirtualBox:~/program/progEdit#
您的程序只能靠运气工作,因为
getchar
返回的是int
而不是char
。这是因为getchar
可能返回EOF
,它不一定表示为char
要修复此错误,您需要将
char c
替换为int c
您的程序只能靠运气工作,因为getchar
返回的是int
而不是char
。这是因为getchar
可能返回EOF
,它不一定表示为char
要修复此错误,您需要将
char c
替换为int c
是否可能是输入超过MAXLINE
(1000)个字符?此外,还返回int
。这实际上非常重要。如果char
是无符号的,EOF
(-1)将不会被检测到,请使用int c
这是getchar
返回的内容。EOF的类型是int,而不是char。在Windows控制台中,Ctrl-Z
必须是换行符后的第一个字符。输入是否超过MAXLINE
(1000)个字符?此外,还返回一个int
。这实际上非常重要。如果char
是无符号的,EOF
(-1)将不会被检测到,请使用int c
,这是getchar
返回的内容。EOF的类型是int,而不是char。在Windows控制台中,Ctrl-Z
必须是换行后的第一个字符。是的,这是问题之一,然而,仅仅这样做是不起作用的,在输入输入后,我还必须执行Ctrl+Z。既然你提到了我的代码中的一个缺陷,我仍然会给你一个投票。是的,这是问题之一,但是仅仅这样做是不起作用的,我还必须在输入输入后执行Ctrl+Z。既然你提到了我代码中的一个缺陷,我还是会给你一个投票。