2012-10-13 102 views
1

我將其中包含空格的字符串作爲輸入,並用NULL字符'\ 0'替換空格。當我現在打印字符串時,我只希望直到第一個空字符的部分,這是第一個空格,但是我得到的是原始字符串。打印一個空字符的字符串

這裏是代碼 -

#include<stdio.h> 

int main(){ 
    char a[1000]; 
    int length, i = 0; 
    length = 0; 
    scanf("%[^\n]s", a); 
    while(a[i]!='\0') 
      i++; 
    length = i; 
    printf("Length:%d\n", length); 
    printf("Before:%s\n", a); 
    for(i=0;i<length;i++){ 
      if(a[i] == " ") 
        a[i] = '\0'; 
    } 
    printf("After:%s\n", a); 
    return 0; 
} 

什麼這是錯的?

+8

'A [1] ==「「'是不一樣的'A [1] =='「'。 – DCoder

+3

請注意編譯調試信息和啓用所有警告的習慣。如果你在linux上用'gcc -Wall -g'進行編譯,你會得到一個警告,以幫助你發現你的錯誤。 –

+0

@直播你應該發佈這個答案。 –

回答

6

您的代碼是錯誤的。

for(i=0;i<length;i++){ 
     if(a[i] == " ") 
       a[i] = '\0'; 
} 

的比較試圖將一個字符與指針比較(用「」表示 - >這成爲一個指向字符的字符串在這種情況下,字符串是僅具有一個空間。) 這可以通過以下替換固定

for(i=0;i<length;i++){ 
     if(a[i] == ' ') 
       a[i] = '\0'; 
} 

還是好做這種方式,因爲你可以有其他的空格太像標籤,除了空間。 (請包括文件ctype.h也)

for(i=0;i<length;i++){ 
      if(isspace(a[i])) 
       a[i] = '\0'; 
} 
-1

替換" "printf通過' '。當我嘗試時它按預期工作。

+0

Downvoter,請解釋! – Raj

+3

'''''不應該在'printf'中被替換,而是在'if'測試中。 –

+3

我沒有降低你的評價,但是當你的回答是正確的(改變C字符串指針到空格字符)時,它與'printf'函數無關。我的猜測是,這就是讓你失望的原因。 –