c - 我如何将字符串(作为用户的输入)传递给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
解决方案
您不需要访问数组地址,char*
当您将它传递给函数(toscanf
和hello
)时,它将被隐式转换为。
我没有看到函数指针的使用,所以为了简化代码,我会这样重写它:
#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;
}
推荐阅读
- python - RuntimeError: mat1 dim 1 必须与 mat2 dim 0 匹配并添加数据增强
- vba - 工作双循环工作但非常慢的代码:更好的方法?
- git - 如何在分支上提交更改?然后如何避免将该分支拉入生产?
- jq - JQ 仅过滤 id 的值
- image - 目前正在尝试制作图像上传器,但此代码块不起作用。(我会在 * 中标记错误)
- android - 更新到 androidx.appcompat:appcompat:1.3.0 导致“indexOutOfBounds”崩溃
- python - 如何删除重复关键字的行?
- python - 基于列的 Pandas grouby 和 flatten
- c# - 我使用了 FerretLib.WinForms 中的 TagListControl,但事件处理程序有问题
- gis - 如何合并多个相交的多边形