如何在C中修剪字符串中的空格?

时间:2019-03-02 06:49:37

标签: c

我试图编写一个C程序来修剪字符串中所有出现的空白并打印结果字符串,但是没有得到理想的结果,我得到了一些随机符号作为输出。请帮助我。

#include<stdio.h>
#include<string.h>
int main()
{
    char s[100];char a[100];int i;
    printf("enter the string:\n");
    gets(s);
    int len=strlen(s);
    for(i=0;i<len;i++)
    {
         if(s[i]!=' ')
         {
             a[i]=s[i];
         }
    }

    for(i=0;i<len;i++)
    {
         printf("%c",a[i]);
    }   
}
  

输入:Hello Hello

     

预期输出:HelloHello。

     

当前输出:你好◄你好

2 个答案:

答案 0 :(得分:2)

您应该从s复制到a,而不是从a复制到s

还使用fgets代替gets,并使用isspace检查空格字符。

#include <stdio.h>
#include <ctype.h>

int main() {
    char s[100];
    char a[100];

    fgets(s, 100, stdin);

    int i = 0;
    int j = 0;
    for (; s[i]; ++i) {
        if (!isspace(s[i])) {
            a[j] = s[i];
            ++j;
        }
    }
    a[j] = '\0'; 

    printf("%s\n", a);
    return 0;
}

答案 1 :(得分:1)

#include <stdio.h>
#define MAX_SIZE 100 // Maximum string size

/* Function declaration */
void trimTrailing(char * str);


int main()
{
    char str[MAX_SIZE];

    /* Input string from user */
    printf("Enter any string: ");
    gets(str);

    printf("\nString before trimming trailing white space: \n'%s'", str);

    trimTrailing(str);

    printf("\n\nString after trimming trailing white spaces: \n'%s'", str);

    return 0;
}

/**
 * Remove trailing white space characters from string
 */
void trimTrailing(char * str)
{
    int index, i;

    /* Set default index */
    index = -1;

    /* Find last index of non-white space character */
    i = 0;
    while(str[i] != '\0')
    {
        if(str[i] != ' ' && str[i] != '\t' && str[i] != '\n')
        {
            index= i;
        }

        i++;
    }

    /* Mark next character to last non-white space character as NULL */
    str[index + 1] = '\0';
}