我试图从函数中获取用户输入(字符串),然后将主函数中的变量设置为他们的输入。在 C

问题描述 投票:0回答:2
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);
}

我一直在摆弄指针,并且一直在研究如何从函数返回指针。网上的所有信息都使用整数值,它们对我来说工作得很好,但是当我用字符串尝试它时,我遇到了很多错误,并且无法找出如何使其工作。

c pointers function-pointers
2个回答
0
投票

我做了一些更改来使其运行。

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;
}

0
投票

考虑使用

fgets
代替
scanf

将 char 数组及其大小传递给函数。 考虑使
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.