0
点赞
收藏
分享

微信扫一扫

【C语言】去除字符串中的空格并分解单词

爱上流星雨 2022-04-14 阅读 161
c语言c++
题目:去除字符串中的空格并分解单词。
要求:在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>部分函数功能,有兴趣可以自己深入了解

 

 

举报

相关推荐

0 条评论