读书人

为什么结果后面会出现中文啊该如何处理

发布时间: 2012-04-25 19:32:32 作者: rapoo

为什么结果后面会出现中文啊
题目是读取一行里的一串字符到数组,其中不含空格,制表符和换行符,
并丢弃该行中其他字符。
我运行的结果到空格,制表符或换行符就截断了,不过后面出现一串中文
“烫烫烫烫烫烫烫烫烫烫烫烫?”
这是为什么,请大侠帮解答下啊


#include <stdio.h>
#include <ctype.h>
#define LEN 30
char * getword(char * str);

int main(void)
{

char input[LEN];

while(getword(input)!= NULL)
puts(input);
printf("Done\n");

return 0;

}


char * getword(char * str)
{
int ch;

while((ch = getchar()) != EOF && !isspace(ch))
*str++ = ch;
*str=='\0';

if (ch == EOF)
return NULL;
else
{
while(ch !='\n')
ch = getchar();
return str;
}
}

[解决办法]
哈哈 你的str='\0';这句错了,你成赋值了!!!
[解决办法]

根据你说的情况改了,正确的应该是:
#include <stdio.h>
#include <ctype.h>
#define LEN 30
char * getword(char * str);

int main(void)
{

char input[LEN];

while(getword(input)!= NULL)
puts(input);
printf("Done\n");

return 0;

}


char * getword(char * str)
{
int ch;

while((ch = getchar()) != EOF && !isspace(ch))
*str++ = ch;
*str='\0';//你这里出错了,不是==,而是=

if (ch == EOF)
return NULL;
else
{
while(ch !='\n')
ch = getchar();
return str;
}
}

读书人网 >C语言

热点推荐