我是 C 语言的新手,正在尝试创建一个简单的程序来返回姓名和年龄。我创建了一个用于返回名称的工作函数,但是对于返回int无效。
我现在拥有的代码是:
int * GetAge(){
int Age;
printf("What is your age: ");
scanf(" %d", &Age);
int * returnedage = Age;
return returnedage;
}
这是GetName():
char * GetName(){
char Name[31];
printf("What is your name: ");
scanf("%s", Name);
char * returnedname = Name;
return returnedname;
}
警告在此行:
int * returnedage = Age;
它说:
incompatible integer to pointer conversion
initializing 'int *' with an expression of type 'int'; take
the address with &
我尝试过:
int * returnedage * Age;
int * returnedage & Age;
//for strcpy I set the function as a char
char * returnedage;
strcpy(Age, returnedage);
这些工作都没有。
我只想获取姓名和年龄,然后我主要使用以下命令打印姓名和年龄:
printf("Your name is %s and your age is %d", GetName(), *GetAge());
这没有任何错误。
所以我的预期输出是:
What is your name: Ethan
What is your age: 13
Your name is Ethan and your age is 13
我实际上得到的是:
What is your name: ethan
What is your age: 13
exit status -1
请告诉我是否有基本的解决方案。
答案 0 :(得分:1)
将代码更改为此:
int GetAge()
{
int Age;
printf("What is your age: ");
scanf(" %d", &Age);
return Age;
}
在主要位置(删除GetAge()上的*):
printf("Your name is %s and your age is %d", GetName(), GetAge());
您过于复杂了。再次阅读您用来学习C的资料,以更好地了解正在发生的事情。
已编辑: 将您的GetName()更改为:
void GetName(char *name){
printf("What is your name: ");
scanf("%s", name);
}
现在在主页面上:
char name[31];
GetName(name);
printf("Your name is %s and your age is %d", name, GetAge());
这样做的原因是C无法返回字符数组(这是您试图通过某种方式完成的工作)。相反,您可以给该函数一个位于main()中的局部变量的内存地址,并将用户的输入存储到该变量中。
答案 1 :(得分:0)
尝试:
int GetAge()
{
int Age;
printf("What is your age: ");
if (scanf("%d", &Age) != 1)
return -1; // return an error code if an integer couldn't be read
return Age;
}
现在使用GetAge()
调用函数。