在 C (GCC) 中使用 char *
using char * in C (GCC)
我有以下代码
#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;
}
它接受四个字符串但在打印出来之前就崩溃了?
我想做的第二件事是将这些字符串 (A、B、C、D) 传递给接受 void 指针的函数,我是否必须先将它们转换为 void 指针??
您需要为 A
分配 space,您使用 scanf()
的方式错误,"%s"
说明符没有为 space 分配目标变量。
您可以通过将 A
声明为固定大小的数组来在堆栈中分配 space,就像这样
char A[100];
然后
if (scanf("%99s", A) != 1)
{
printf("unexpected problem, probably `EOF'\n");
return -1;
}
还有这个
char *A, B, C, D;
显然不是你想的那样,*
只适用于那里的 A
,所以也许你的意思是
char *A, *B, *C, *D;
最后一件事,"%s"
说明符需要一个 char *
即 char
指针,通过使用您传递的运算符的 &
地址 char **
这是错误的,所以在这种情况下你不需要它。
我有以下代码
#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;
}
它接受四个字符串但在打印出来之前就崩溃了?
我想做的第二件事是将这些字符串 (A、B、C、D) 传递给接受 void 指针的函数,我是否必须先将它们转换为 void 指针??
您需要为 A
分配 space,您使用 scanf()
的方式错误,"%s"
说明符没有为 space 分配目标变量。
您可以通过将 A
声明为固定大小的数组来在堆栈中分配 space,就像这样
char A[100];
然后
if (scanf("%99s", A) != 1)
{
printf("unexpected problem, probably `EOF'\n");
return -1;
}
还有这个
char *A, B, C, D;
显然不是你想的那样,*
只适用于那里的 A
,所以也许你的意思是
char *A, *B, *C, *D;
最后一件事,"%s"
说明符需要一个 char *
即 char
指针,通过使用您传递的运算符的 &
地址 char **
这是错误的,所以在这种情况下你不需要它。