2010-10-02 32 views
2
#include <stdio.h> 

int main(void){ 
    char x [] = "hello world."; 
    printf("%s \n", &x[0]); 
    return 0; 
} 

上面的代碼打印出"hello world."如何訪問字符數組的第一個字符?

我怎麼會打印出剛剛"h"?訪問x[0]不應該保證這一點?

回答

7

你應該這樣做:

printf("%c \n", x[0]); 

format specifier打印字符是c。所以要使用的格式字符串是%c

還要訪問有效索引i處的數組元素,您需要說array_name[i]。你不應該使用&。使用&會給你元素的地址。

+0

這個伎倆! – Kay 2010-10-02 12:19:24

4

不應該訪問x[0]確保這?

沒有,因爲在&x[0]&獲取字符串的第一個元素的地址(所以它相當於只用x

%s將輸出所有字符串中的字符看空字符在所述字符串的末尾(這是隱式爲文字串)。

爲了打印出一個字符,而不是整個字符串,使用字符格式說明,%c代替。

請注意,printf("%s \n", x[0]);將無效,因爲x[0]類型爲char,而%s預計爲char *

+0

非常感謝,我很欣賞的,而不是發佈評論說:「非常感謝」,請嘗試單擊後旁邊的向上箭頭您的幫助:) – Kay 2010-10-02 12:17:06

+3

@Kay。此外,請單擊旁邊的複選標記,並以最佳答案爲準。 – 2010-10-02 12:22:02

3
#include <stdio.h> 

int main(void){ 
    char x [] = "hello world."; 
    printf("%c \n", x[0]); 
    return 0; 
} 
+0

非常感謝保羅:) – Kay 2010-10-02 12:18:49

2

C中的字符串是一個字符數組,其最後一個字符爲NULL字符'\ 0'。當您在printf中使用「%s」字符串說明符時,它將在給定地址處開始打印字符,並繼續執行,直至遇到空字符。要打印單個字符,請改用「%c」格式字符串。

0

由於C中的字符串是一個字符數組。 該聲明將打印第一個字符。

printf("%c \n", "hello world."[0]); 
相關問題