我是编程新手,我有一项任务是创建一个读取名称的函数。出于某种原因,以下“解决方案” 不起作用,输出总是带有奇怪的中文? 字符。什么地方出了错?
#include <stdio.h>
#include <stdlib.h>
void input(char* a);
int main()
{
char name[8];
input(&name);
printf("%s", name);
return 0;
}
void input(char* a)
{
char buff[8];
scanf("%s", buff);
*a = buff;
}
最佳答案
我觉得是你的问题
*a = buff;
声明,因为 buff
在您的函数之外没有生命。所以它的内存会丢失..所以以这种方式尝试和使用 buff 是不安全的...
[ 但正如@pablo 所指出的,*a = buff;
将做的是复制 buff
的地址并将其放入分配给 的内存中a
,这真的不是你想做的。 ]
下面应该可以工作,并且从你的函数中包含 return
#include <stdio.h>
#include <stdlib.h>
void input(char* a);
int main()
{
char name[8];
input(&name);
printf("%s", name);
return 0;
}
void input(char* a)
{
// char buff[8];
scanf("%s", a);
// *a = buff;
return;
}
另一点是检查您是否确定名称只有 8 个字符长...为什么不将其设置为 50 个字符?
关于c - 创建一个读取(字符串)输入的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48490104/