2013-03-04 49 views
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。 爲什麼我得到錯誤的輸出? 那裏。來自哪裏?空間從字符串

+1

這可能屬於上[CodeReview](http://codereview.stackexchange.com) – 2013-03-04 16:28:32

+0

@VladLazarenko真的嗎?我認爲SO是用於編程問題,CR用於審查代碼。那麼這裏有什麼樣的問題呢? – Dukeling 2013-03-04 16:30:15

+2

'。'可能只是垃圾數據剩下的東西。你最大的問題是無論如何'count'都會增加。你應該在'final [count] = a [i];'和'count ++'中放置大括號,所以'count'只會在向數組添加一個字母時增加。目前,當它到達一個空間時,沒有任何東西被添加到該位置的'final'數組中 – jonhopkins 2013-03-04 16:30:37

回答

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; 
} 
6

的錯誤是在這裏:

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

count++應列入if,所以:

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

注:它被認爲是良好的編程習慣後if語句總是使用大括號。

+1

+1好看。它只是顯示了代碼正確縮進的重要性。 – LihO 2013-03-04 16:33:03

2

在for循環中,即使a[i] == ' '增加了計數。
因此,當a[i] == ' '你只增加計數,但不會將final[count]設置爲任何值。

我假設你彪寫:

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

非常感謝。非常感謝。非常愚蠢。 – 2013-03-04 16:45:17

0

在循環中,計數應該增加,如果A [1]不等於空間

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

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