是否可以扫描字符,将其传递给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;
}
答案 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
,当您打印char
(A[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;
}
代码中的错误是:
您指定char
类型为char *
由于声明了char,您的print语句不正确 阵列错了。
请注意,我已将数组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;
}