空格从String中删除

时间:2013-03-04 16:26:10

标签: c

#include<stdio.h>
#include<string.h>

int main(){
    char array[]="Arijit Saha Student";
    spaceremover(array);
    getch();
    return 1;
}

int spaceremover(char a[]){
    int i;
   // printf("L=%d",strlen(a));
    char final[strlen(a)+1];
    int count=0;
    for(i=0;i<strlen(a);i++)
    {
        if(a[i]!=' ')
            final[count]=a[i];
        count++;
    }
    final[count]='\0';
    int j=0;
    for(j=0;j<strlen(final);j++)
    printf("%c",final[j]);
    // printf("\n%s",final);
    return 1;
}

使用此示例代码,输出为Arijit.Saha,但我所需的输出为ArijitSahaStudent。 为什么我得错了输出? 在哪里。来自哪里?

4 个答案:

答案 0 :(得分:6)

错误在于:

if(a[i]!=' ')
    final[count]=a[i];
count++;

count++应包含if,所以:

if(a[i]!=' ') {
    final[count]=a[i];
    count++;
}

注意:在if语句后总是使用花括号被认为是一种很好的编程习惯。

答案 1 :(得分:2)

在for循环中,即使a[i] == ' ',也会增加计数 因此,当a[i] == ' '时,您只会增加计数,但不会将final[count]设置为任何内容。

我假设你写作:

if (a[i] != ' ')
{
    final[count] = a[i];
    count++;
}

答案 2 :(得分:0)

您没有正确递增计数。它需要在if循环中。这可能更容易让您看到事情是否正确缩进。

#include<stdio.h>
#include<string.h>

int main(){
  char array[]="Arijit Saha Student";
  spaceremover(array);
  return 1;
}

int spaceremover(char a[]){
  int i;
  // printf("L=%d",strlen(a));
  char final[strlen(a)+1];
  int count=0;
  for(i=0;i<strlen(a);i++)
  {
    if(a[i]!=' ')
      final[count++]=a[i];
  }
  final[count++]='\0';
  int j=0;
  for(j=0;j<strlen(final);j++)
    printf("%c",final[j]);
  // printf("\n%s",final);
  return 1;
}

答案 3 :(得分:0)

在循环中,如果[i]不等于空格

,则计数应该增加

if(a[i]!=' ') final[count]=a[i]; count++;

if(a[i]!=' ')
final[count++]=a[i];
//count++;