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

时间:2016-11-22 15:55:52

标签: c string printing character compiler-warnings

是否可以扫描字符,将其传递给char数组,然后将a定义为字符串以打印该字符串?下面是代码,(获取警告“从不同大小的整数转换为指针”) 提前致谢

 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;
 }

4 个答案:

答案 0 :(得分: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,当您打印charA[0])时,您应该在%c函数中使用printf()

如果要将其打印为字符串(%s修饰符),则需要对其进行NULL终止,这意味着在字符串的末尾添加\0

答案 1 :(得分:0)

如果你想从char创建一个字符串并使用“%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指针数组而不是数组 char
  2. 您指定char类型为char *

  3. 由于声明了char,您的print语句不正确 阵列错了。

  4. 请注意,我已将数组A初始化为0,以便字符串自动为空终止。

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

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

答案 2 :(得分: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;
}

答案 3 :(得分:0)

试试这个代码,我现在在手机上。我还没有测试过它。

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

    return 0;
}