#include <stdio.h>
#include <string.h>
char word[100];
int isDelim(char c)
{
switch (c)
{
case ',':
case '.':
case ' ':return 1;
default:return 0;
}
}
int getWord(char in[], char w[],int p)
{
int i;
int wordPos = 0;
int isBegin = 0;
int len = strlen(in);
for (i = p;i < len;i++)
{
if (isDelim(in[i]))
{
if (isBegin == 0)
{
continue;
}
else
{
break;
printf("i=%d", i);
}
}
else {
isBegin = 1;
word[wordPos++] = in[i];
}
}
word[wordPos] = '\0';
printf("%s", word);
return (i>= len)? -1 : i;
}
int main()
{
char input[100];
freopen("C:\\input.txt", "r", stdin);
while (gets_s(input)!= NULL)
{
int pos = 0;
do
{
pos = getWord(input, word, pos);
printf("%d\n",pos);
} while (pos>=0);
}
}
要点在于:gets_s(ch)和scanf(ch)对空格的处理不同。如果希望读取的字符串中不包含空格,那么使用 scanf() 函数;如果希望获取整行字符串,那么使用 gets() 函数,它能避免空格的截断。
本题是要空格的。