我想打印一個字符串的第一個字母,但是出現運行時錯誤。C中字符串的第一個字母
這是我的代碼:
int main(void) {
char str[] = "Hello";
printf("%s\n", str[0]);
return 0;
}
我不是舒爾如果這是一個字符串用C是如何工作的,所以如果你有一些建議,請幫助。
我想打印一個字符串的第一個字母,但是出現運行時錯誤。C中字符串的第一個字母
這是我的代碼:
int main(void) {
char str[] = "Hello";
printf("%s\n", str[0]);
return 0;
}
我不是舒爾如果這是一個字符串用C是如何工作的,所以如果你有一些建議,請幫助。
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);
您應該使用%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]);
Rajesh - 信息的ty。不幸的是,我使用了一個在線編譯器,除了正常的運行時錯誤外,沒有給我任何東西。:(! – 2014-10-10 00:29:36
嘗試https://www.sourcelair.com,它具有很好的linux控制檯界面,它不是促銷活動,我經常使用它。 – radar 2014-10-10 00:44:07
您必須使用"%c"
選項用printf
打印單個字符,"%s"
用於字符串。在你的例子中你會得到分段錯誤。與
gcc -Os -Wall -pedantic main.c && ./a.out
編譯程序發出嚴格的ISO C和ISO C要求的所有警告++ &拒絕所有使用禁止擴展名的程序。這將產生一個警告:
警告:格式 '%s' 的期望類型 '字符*' 的參數,但參數2 具有類型 'INT'[-Wformat =] 的printf(「%S \ n 「,str [0]);
這可能會幫助你的結果預計:
int main(void) {
/*changed from str[] to *str
*/
char *str = "Hello";
/*changed from %s to %c
*/
printf("%c\n", str);
return 0;
}
這將打印字符長度的第一變量由乙方指向。
在printf的打印字符串的任何字符對單個字符使用'%c','%s'用於字符串。 – jpw 2014-10-10 00:19:59
@jpw - 謝謝!你從一些非常恐怖中拯救了我:D! – 2014-10-10 00:27:44
您在下面評論過您使用的是在線編譯器。爲什麼不下載完整的MinGW C/C++編譯器。它免費提供。 – ryyker 2014-10-10 00:35:48