我想到的是這樣的:可以在printf中使用指向字符串的指針嗎?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(void) {
//test pointer to string
char s[50];
char *ptr=s;
printf("\nEnter string (s): ");
fgets(s, 50, stdin);
printf("S: %s\nPTR: %s\n", s, *ptr);
system("PAUSE");
return 0;
}
或者我應該用一個for循環與*(S + i)和格式說明%C? 這是通過指針和簡單的printf打印字符串的唯一可能的方法嗎?
更新:printf與數組的第一個元素的地址一起操作,所以當我使用* ptr時,我實際上使用第一個元素操作而不是它的地址。謝謝。
請不要使用'gets'。 「不要使用gets(),因爲如果事先不知道數據,就不可能知道get()將讀取多少個字符,並且由於gets()會繼續存儲緩衝區末尾的字符,所以對於它已被用於破壞計算機安全,請使用fgets()代替。「 (['與fgets(3)'](http://linux.die.net/man/3/fgets))。 –
如果您不介意,我會調整代碼以最大限度地減少評論您寫的內容對問題不重要的機率。即使用'gets()'和'main()'的返回類型。你應該不惜一切代價避免使用'gets()'並且使用其他方法,比如'fgets()'(就像@Bertrand解釋的那樣)。 'main()'應該_always_返回'int'。 –