printf 可以打印定义的字符串吗?

Can printf print defined strings?

是否可以扫描一个字符,将其传递给一个字符数组,然后如果 a 被定义为字符串,则打印该字符串?下面是代码,(收到警告 "cast to pointer from integer of different size") 提前致谢

 char *a = "alpha";
 int main()
 {
     char *A[80];
     char ch;
     printf("enter message");
     scanf(" %c", &ch);
     A[0] = (char *) ch;
     printf("%s\t", A[0]);

     return 0;
 }

这可能是您要写的内容:

int main()
{
  char A[80];
  char ch;
  printf("enter message");
  scanf(" %c", &ch);
  A[0] = ch;
  printf("%c\t", A[0]);

  return 0;
}

你没有声明数组 A 正确,当你打印 char (A[0]) 时,你应该在 [=15= 中使用 %c ] 功能。

如果你想把它打印成一个字符串(%s修饰符),你需要以NULL结束它,这意味着在字符串的末尾添加[=17=]

如果你想从一个字符创建一个字符串并使用“%s”打印它,你需要做如下的事情:

char *a = "alpha";
 int main()
 {
     char A[80] = {0};
     char ch;
     printf("enter message");
     scanf(" %c", &ch);
     A[0] = ch;
     printf("%s\t", A);

     return 0;
 }

您的代码中的错误是:

  1. 您声明的是一个 char 指针数组,而不是一个 字符
  2. 您分配的 char 类型转换为 char *

  3. 由于 char 的声明,您的打印语句不正确 数组错误。

请注意,我已将数组 A 初始化为 0,因此字符串会自动以 null 结尾。

根据您的评论,您预期解决方案的更新代码:

char *a = "alpha";
 int main()
 {
     char ch;
     printf("enter message");
     scanf(" %c", &ch);
     if (ch == 'a')
       printf("%s\t", a);
     return 0;
 }

你想要的可能是这样的。

#include <stdio.h>

/* word candidate list: terminated by NULL */
const char* a[] = {
    "alpha",
    NULL
};

int main(void)
{
    char ch;
    int i;
    /* read input */
    printf("enter message");
    if (scanf(" %c", &ch) != 1)
    {
        puts("read error");
        return 1;
    }
    /* search for matching word(s) */
    for (i = 0; a[i] != NULL; i++)
    {
        /* if the first character of the word is what is scanned, print the word */
        if (a[i][0]  == ch)
        {
            printf("%s\t", a[i]);
        }
    }
    return 0;
}

试试这个代码,我现在在移动 phone。我没有测试过。

int main()
{
    char A[80];
    char ch;
    printf("enter message");
    A[0] = (char)fgetc(stdin);
    printf("\n%c\n", A[0]);

    return 0;
}