首页 > 解决方案 > 我如何将字符串(作为用户的输入)传递给c中的函数?

问题描述

#include<stdio.h>
void add(int a,int b)
{
    int c=a+b;
    printf("\nSum=%d",c);
}
void hello(char *name)
{
    printf("Hello %s",*name);
}
int main()
{
    int  a,b;
    char name[20];
    void (*ptr)(int,int)=&add;
    void (*hello)(char*)=hello;
    printf("Enter your Name:");
    scanf("%s",&name);
    hello(&name);
    printf("Enter the two values\n");
    scanf("%d%d",&a,&b);
    ptr(a,b);
    return 0;
}

我想从用户那里获取输入,然后将其传递给函数,但我无法这样做。

这是我的编译器显示为错误的内容:https ://i.stack.imgur.com/DVYL6.png

标签: c

解决方案


您不需要访问数组地址,char*当您将它传递给函数(toscanfhello)时,它将被隐式转换为。

我没有看到函数指针的使用,所以为了简化代码,我会这样重写它:

#include <stdio.h>

void add(int a, int b)
{
    printf("Sum = %d\n", a + b);
}

void hello(char *name)
{
    printf("Hello %s\n", name);
}

int main()
{
    int a = 0, b = 0;
    char name[20];

    printf("Enter your Name:\n");
    scanf("%s", name);
    hello(name);

    printf("Enter the two values\n");
    scanf("%d%d", &a ,&b);
    add(a, b);
    
    return 0;
}

如果你坚持使用指针,那么 main 应该这样写:

int main()
{
    int  a = 0, b = 0;
    char name[20];

    void (*add_ptr)(int, int) = &add;
    void (*hello_ptr)(char *) = &hello;

    printf("Enter your Name:\n");
    scanf("%s", name);
    hello_ptr(name);

    printf("Enter the two values\n");
    scanf("%d%d", &a, &b);
    add_ptr(a, b);

    return 0;
}

推荐阅读