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 に答える