Это простая функция для многих, но как новичок, мне еще предстоит преодолеть призрак указателя, особенно когда речь идет о строках. Я понимаю некоторые примеры strcmp, strcpy, strlen, а также то, как символы назначаются в памяти с помощью NULL-терминатора. Я также думаю, что переменная указателя в памяти указывает на адрес int var или char и т. Д., И вы назначаете их путем разыменования их в var/char, но всякий раз, когда я пытаюсь написать код, появляется призрачный указатель назад, чтобы укусить меня. Итак, здесь я пытаюсь запустить это и не работает. Буду признателен, если вы могли бы разъяснить это мне ...Передача строк в качестве указателя на функцию
//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;
}
Определение «не работает». Мы понятия не имеем, что это должно делать, и мы не можем заставить вас отлаживать код для вас. –
Просьба указать его C. – user2672165
Похоже, вы хотите 'scanf ("% s ", s2);' вместо 'scanf ("% s "," s2 ");' – Lee