0
#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

4 回答 4

6

错误在这里:

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

count++应该包含在 中,if所以:

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

if注意:在语句后始终使用大括号被认为是一种良好的编程习惯。

于 2013-03-04T16:30:47.573 回答
2

在 for 循环中,即使a[i] == ' '.
因此,当a[i] == ' '您仅增加计数但未设置final[count]任何内容时。

我假设你要写:

if (a[i] != ' ')
{
    final[count] = a[i];
    count++;
}
于 2013-03-04T16:34:38.373 回答
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;
}
于 2013-03-04T16:32:23.577 回答
0

在循环中,如果 a[i] 不等于空格,则计数应增加

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

if(a[i]!=' ')
final[count++]=a[i];
//count++;
于 2013-03-04T17:12:58.643 回答