【发布时间】:2014-01-11 20:31:25
【问题描述】:
对于很多人来说这是一个简单的功能,但作为初学者,我还没有克服特别是在字符串方面的指针幻影。我了解 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;
}
【问题讨论】:
-
定义“不起作用”。我们不知道这应该做什么,也不能强迫我们为您调试代码。
-
看起来你想要
scanf ("%s", s2);而不是scanf ("%s", "s2"); -
这里我试图从主函数打印名称输入,只要它不大于 20 个字符或为空。我知道这是一团糟,但试图澄清我做错了什么......
标签: c string function pointers