Ctrl+z 和程序中的EOF是对应的吗?为什么本人写这个程序结束不了

C语言 码拜 9年前 (2016-04-20) 1039次浏览
输入一段含标点的英文语段(若干行,以Ctrl+Z结束)
统计这段话中出现的全部词语
要求按字典顺序输出词语,每输出一个词换一行
样例输入就是一段话,输出就是这段话出现的全部词语(相同的词语只出现一次)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char a[1000][50],ch,b[50];
int i=0,j=0,m,k;
while((ch=getchar())!=EOF){
if((ch>”a”&&ch<“z”)||(ch>”A”&&ch<“z”))
a[i][++j]=ch;
else{
i++;
j=0;}
}
m=i+1;
printf(“%d\n”,m);
for(i=0;i<m-1;i++){
k=i;
for(j=i+1;j<m;j++){
if(strcmp(a[k],a[j])>0)
k=j;
}
if(k!=i){
strcpy(b,a[i]);
strcpy(a[i],a[k]);
strcpy(a[k],b);
}
}
for(i=0;i<m;i++)
{
if(i==0)
printf(“%s\n”,a[i]);
else if(strcmp(a[i],a[i-1])<0)
printf(“%s\n”,a[i]);
}
}
解决方案

20

while((ch=getchar())!=EOF)
你跟一下代码看看ch读出来的值是多少,是不是跟EOF的值一致不就知道了吗?
不过控制台程序一般本人都用回车来结束输入,判定一下等于”\n”就行了。

10

ch 应为 int
否则不能保证正确性

10

Linux:Ctrl+D
Windows:Enter、Ctrl+Z、Enter

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Ctrl+z 和程序中的EOF是对应的吗?为什么本人写这个程序结束不了
喜欢 (0)
[1034331897@qq.com]
分享 (0)