//设计一个函数,功能是读取输入行里的单词到数组,并丢掉改行的其他字符。一个单词的
//定义是一串字符,其中不含空格、制表符和换行符。
#include <stdio.h>
#include <ctype.h>
#define LEN 20
int main (void)
{
char *cut_word (char *st); //声明
char string[LEN];
char *new_word;
gets (string);
new_word = cut_word (string);
puts (new_word);
}
char *cut_word (char *st)
{
char array[LEN + 1];
char *p;
p = array;
while (*(st++) != '\0')
{
if (isalpha(*st)) //判断数组元素是否为字母
*(p++) = *st;
}
return (p);
}
p的问题注意到了,问题在于这个程序运行的时候什么也不显示。。。。就直接press any key了,
另外puts函数不是输出整个字符串?
return p的p指向的是最后一个字母的下一地址(下一地址没东西,当然不输出了)
puts函数是输出当前地址以后的内容 (当前地址是最后一个字母的下一地址)
有道理.......按照你的建议,我没有用增量运算符
char *cut_word (char *st)
{
char array[LEN + 1];
char *p;
int i = 0;
p = array;
while (*(st + i) != '\0')
{
if (isalpha(*st))
*(p + i) = *st;
i++;
}
return (p);
}
还是不行诶。。。。