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