题目:去除字符串中的空格并分解单词。 要求:在main()中调用下述各函数,完成字符串中去除空格并分解单词的功能。 函数原型如下: 函数一:单词内是否包含数字 int IsNumIn(char word[]) 函数二:单词内是否包含空格 int IsSpcIn(char word[]) 函数三:去掉单词的前后空格,tab键和换行符 Trim(char oldWord[], char newWord[]) 函数四:单词内部有空格,分解成多个单词 Seg(char words[], char wArray[][100] ) 假设单词内部只有一个空格,没有两个连续空格的情况发生。 要求利用gets函数来获得用户输入的字符串,不能用scanf来获得用户输入的字符串 程序运行示例1: ros2e error 程序运行示例2: hello world hello world
#include <stdio.h>
#include <ctype.h>
#define N 100
int IsNumIn(char word[]);
int IsSpcIn(char word[]);
void Trim(char oldWord[], char newWord[]);
void Seg(char words[], char wArray[][100]);
int main()
{
char str1[N], str[N], w_Arr[20][100];
int i, j;
for (i = 0; i < N; i++)
{
*(str1 + i) = 0;
*(str + i) = 0;
}
for (i = 0; i < 20; i++)
{
for (j = 0; j < 100; j++)
w_Arr[i][j] = 0;
}
gets(str1);
Trim(str1, str);
if (IsNumIn(str))
printf("error");
else
{
if (IsSpcIn(str))
{
Seg(str, w_Arr);
for (i = 0; w_Arr[i][0] != '\0'; i++)
{
puts(w_Arr[i]);
}
}
else
puts(str);
}
return 0;
}
int IsNumIn(char word[])
{
int i;
for (i = 0; *(word + i) != '\0'; i++)
{
if (isdigit(*(word + i)))
return 1;
}
return 0;
}
int IsSpcIn(char word[])
{
int i;
for (i = 0; *(word + i) != '\0'; i++)
{
if (isspace(*(word + i)))
return 1;
}
return 0;
}
void Trim(char oldWord[], char newWord[])
{
int i = 0, j = 0;
while (isspace(*(oldWord + i)))
i++;
while (*(oldWord + i) != '\0')
{
*(newWord + j) = *(oldWord + i);
i++;
j++;
}
i--;
j--;
for (; isspace(*(oldWord + i)); i--, j--)
{
*(newWord + j) = 0;
}
}
void Seg(char words[], char wArray[][100])
{
int i, j = 0, k = 0;
for (i = 0; i < N; i++)
{
if (isalpha(*(words + i)))
{
wArray[j][k] = *(words + i);
k++;
}
else
{
j++;
k = 0;
}
}
}
所使用的头文件<ctype.h>部分函数功能,有兴趣可以自己深入了解