2014-10-10 23 views
0

我想打印一個字符串的第一個字母,但是出現運行時錯誤。C中字符串的第一個字母

這是我的代碼:

int main(void) { 

    char str[] = "Hello"; 
    printf("%s\n", str[0]); 

    return 0; 
} 

我不是舒爾如果這是一個字符串用C是如何工作的,所以如果你有一些建議,請幫助。

+6

在printf的打印字符串的任何字符對單個字符使用'%c','%s'用於字符串。 – jpw 2014-10-10 00:19:59

+0

@jpw - 謝謝!你從一些非常恐怖中拯救了我:D! – 2014-10-10 00:27:44

+0

您在下面評論過您使用的是在線編譯器。爲什麼不下載完整的MinGW C/C++編譯器。它免費提供。 – ryyker 2014-10-10 00:35:48

回答

0

C字符串是由0字節終止的一系列字符,也稱爲空終止字符串。它可以作爲數組(char [])或作爲指向第一個字符(char *)的指針來訪問。
注意:數組始終從0索引位置開始。

在這裏,在您的代碼str串是這樣的:

char str[] = "Hello"; 

STR [0] = 'H'
STR [1] = 'E'
STR [2] =「升「
STR [3] = 'L'
STR [4] = 'O'
STR [5] = '\ 0'

所以,你可以簡單地使用printf

printf("%c",str[0]); // for the first, changing the value if number you can change the position of character to be printed 



您使用%s這是用來打印整個字符串

printf("%s",str); 
1

您應該使用%c打印單個字符

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

打印整個字符串,你需要使用%S

printf("%s\n", str); 

,你會得到你的代碼warning,所以留心聽警告

warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wf 
ormat=]                         
    printf("%s\n", str[0]);  
+0

Rajesh - 信息的ty。不幸的是,我使用了一個在線編譯器,除了正常的運行時錯誤外,沒有給我任何東西。:(! – 2014-10-10 00:29:36

+0

嘗試https://www.sourcelair.com,它具有很好的linux控制檯界面,它不是促銷活動,我經常使用它。 – radar 2014-10-10 00:44:07

0

您必須使用"%c"選項用printf打印單個字符,"%s"用於字符串。在你的例子中你會得到分段錯誤。與

gcc -Os -Wall -pedantic main.c && ./a.out 

編譯程序發出嚴格的ISO C和ISO C要求的所有警告++ &拒絕所有使用禁止擴展名的程序。這將產生一個警告:

警告:格式 '%s' 的期望類型 '字符*' 的參數,但參數2 具有類型 'INT'[-Wformat =] 的printf(「%S \ n 「,str [0]);

http://coliru.stacked-crooked.com/a/a56055e381c209f1

0

這可能會幫助你的結果預計:

int main(void) { 

/*changed from str[] to *str 
*/ 

char *str = "Hello"; 

/*changed from %s to %c 
*/ 

printf("%c\n", str); 

return 0; 

}

這將打印字符長度的第一變量由乙方指向。

相關問題