Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 程序在while循环后停止运行_C - Fatal编程技术网

C 程序在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){

所以,自从我上次用C编程已经有一段时间了,现在我正试图重新回到C,但是我的程序有问题。该程序非常简单,我使用getchar将字符存储在一个字符数组中,但由于某种原因,该程序在while循环后停止运行

#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。既然你提到了我代码中的一个缺陷,我还是会给你一个投票。