對於很多人來說,這是一個簡單的函數,但作爲一名初學者,我還沒有克服指向特殊字符串的指針。我理解strcmp,strcpy,strlen的一些例子,以及如何使用NULL終止符在內存中分配字符。我想我也明白了內存中的指針變量如何指向int var或char等的地址,並且通過將它們解引用到var/char來分配它們,但是每當我嘗試寫入代碼時,指針ghost都會來回來咬我。 所以,在這裏我試圖運行這個並不起作用。我會很感激,如果你能澄清這對我來說...將字符串作爲指針傳遞給函數
//GETNAME function should return a string that is not NULL and less than 20 characters
char getname (char *s1)
{
int i, n;
char s2[i];
printf ("Enter your name:");
scanf ("%s", "s2");
if (s2 == NULL)
return 0;
else if(n<20)
for (i=0, n =strlen (s2 + 1); i<n; i++)
*(s1+i) = s2[i]; //copy characters from s2 and point to chars of s1
return *s1;
}
int main (int argc, char *argv[])
{
char name[20];
char urname;
urname = getname(name);
printf (" Your name is : %s\n", urname);
getch();
return NULL;
}
定義「不工作」。我們不知道這應該做什麼,我們不能被迫爲您調試代碼。 – 2014-01-11 20:34:32
請給它加上標籤C. – user2672165
看起來你想'scanf(「%s」,s2);'而不是'scanf(「%s」,「s2」);' – Lee