2009-09-24 42 views
0

爲什麼我用控制檯獲得下列代碼?在C編程中轉換數組字符

char array1[] = "Hello World"; 

char ch = array1; 
printf(" %s" , ch); 

(我們被要求不得用指針做到這一點)

+0

它是如何被指示不要使用指針來做到這一點的,但錯誤是您從指針表示法中缺少'*'? – 2009-09-24 03:13:57

回答

6

因爲你需要一個章指針一個字符。編譯器應該給你一個警告,說你正在給一個字符變量分配一個字符指針,它應該警告你,你正在試圖對非字符指針變量printf("%s") - 如果沒有,你應該調高編譯器的警告級別!

只需添加一個小,很容易被遺忘的明星使它正常工作:

#include <stdio.h> 
int main() 
{ 
    char array1[] = "Hello World\n"; 

    char *ch = array1; printf(" %s" , ch); 
    return 0; 
} 

我還拿了你的字符串的結尾添加一個換行符,並把它在一個正確的main功能的自由,爲了完整起見。


我只注意到你說你「不準用指針來做到這一點」 - 幾乎是唯一的其他辦法做到這一點是打印字符一個字符,直到你打空終結者:

#include <stdio.h> 
int main() 
{ 
    char array1[] = "Hello World\n"; 

    int i; 
    for (i = 0 ; array1[i] != '\0' ; i++) 
    { 
     printf("%c", array1[i]); 
    } 
    return 0; 
} 

輸出:

 
$ ./a.out 
Hello World 

更健壯的方法是還穿上了限制,你會多少個字打印出來,而只是檢查\0可能對於似乎是家庭作業的任務來說足夠好了。

+0

謝謝你! 謝謝你! 謝謝你! \ n – user133466 2009-09-24 03:12:25

+0

Mark,我輸入了上面的代碼,但是我試圖用 printf(「%s」,s [3])檢查這個字符串中的第4個元素。 但項目凍結在我=( – user133466 2009-09-24 03:18:34

+0

@metashockwave s [3]是一個字符引用,所以你需要將%s改爲%c才能打印該字符 – 2009-09-24 03:23:52