int main(void){
int *placeholder;
char userID[10] = "";
placeholder = getIdentity();
userID = *placeholder;
}
int getIdentity(){
static char userin[] = "";
printf("What is your ID?");
scanf("%s", userin);
return(&userin);
}
我一直在摆弄指针,并且一直在研究如何从函数返回指针。网上的所有信息都使用整数值,它们对我来说工作得很好,但是当我用字符串尝试它时,我遇到了很多错误,并且无法找出如何使其工作。
我做了一些更改来使其运行。
getIdentity()
现在返回一个指向静态的 char
指针
字符数组userin
,我们添加了一些空间(现在可以容纳 20 个字符)。
userID
中的main()
现在是一个char指针,它用于接收char
返回的getIdentity()
指针。
最后,我们打印填充在
char
中的 getIdentity()
数组。
可运行的代码在这里。
#include <stdio.h>
char *getIdentity()
{
static char userin[20] = "";
printf("What is your ID?: ");
scanf("%s", userin);
return (userin);
}
int main()
{
char *userID = getIdentity();
printf("\nuserID: %s\n", userID);
return 0;
}
考虑使用
fgets
代替 scanf
。userID
大于 10。
#include <stdio.h>
void getIdentity ( char *userin, size_t size) {
printf("What is your ID?");
fgets ( userin, size, stdin);
return;
}
int main(void){
char userID[10] = "";
getIdentity ( userID, sizeof userID);
printf ( "%s\n", userID);
}