Amm*_*r S -2 c gcc void-pointers
我有以下代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *A, B, C, D;
printf("Enter name A:");
scanf("%s", &A);
printf("Enter name B:");
scanf("%s", &B);
printf("Enter name C:");
scanf("%s", &C);
printf("Enter name D:");
scanf("%s", &D);
printf("%s, %s, %s, %s \n", A, B, C, D);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
它接受四个字符串,但在打印出来之前会崩溃吗?
我想做的第二件事是将这些字符串(A,B,C,D)传递给接受void指针的函数,我是否必须先将它们转换为void指针?
您需要为空间分配A,使用scanf()错误的方式,说明"%s"符不会为目标变量分配空间.
你可以通过声明A为固定大小的数组来分配堆栈中的空间,就像这样
char A[100];
Run Code Online (Sandbox Code Playgroud)
然后
if (scanf("%99s", A) != 1)
{
printf("unexpected problem, probably `EOF'\n");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
这个
char *A, B, C, D;
Run Code Online (Sandbox Code Playgroud)
不是你显然认为的,*唯一适用于A那里,所以也许你的意思
char *A, *B, *C, *D;
Run Code Online (Sandbox Code Playgroud)
最后一点,"%s"说明符期望一个char *ie char指针,通过使用&你传递的运算符的地址char **是错误的,所以在这种情况下你不需要它.