在 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 **这是错误的,所以在这种情况下你不需要它。