爲什麼我用控制檯獲得下列代碼?在C編程中轉換數組字符
char array1[] = "Hello World";
char ch = array1;
printf(" %s" , ch);
(我們被要求不得用指針做到這一點)
爲什麼我用控制檯獲得下列代碼?在C編程中轉換數組字符
char array1[] = "Hello World";
char ch = array1;
printf(" %s" , ch);
(我們被要求不得用指針做到這一點)
因爲你需要一個章指針向一個字符。編譯器應該給你一個警告,說你正在給一個字符變量和分配一個字符指針,它應該警告你,你正在試圖對非字符指針變量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
可能對於似乎是家庭作業的任務來說足夠好了。
謝謝你! 謝謝你! 謝謝你! \ n – user133466 2009-09-24 03:12:25
Mark,我輸入了上面的代碼,但是我試圖用 printf(「%s」,s [3])檢查這個字符串中的第4個元素。 但項目凍結在我=( – user133466 2009-09-24 03:18:34
@metashockwave s [3]是一個字符引用,所以你需要將%s改爲%c才能打印該字符 – 2009-09-24 03:23:52
它是如何被指示不要使用指針來做到這一點的,但錯誤是您從指針表示法中缺少'*'? – 2009-09-24 03:13:57