'how can i pass string(taken as input from user) to a pointer function in 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;
}

i want to take input from user then pass it to function but i am unable to do so.

Here is what my complier shows as error: https://i.stack.imgur.com/DVYL6.png

c


Solution 1:[1]

You don't need to access the array address, it will be implicitly converted to char* when you pass it to the functions (both to scanf and hello).

I don't see the use of the functions pointers, so in order to simplify the code, I would rewrite it like this:

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

If you insist of using the pointers, this is how main should be written:

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1