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;
}
您的代码中的错误是:
- 您声明的是一个 char 指针数组,而不是一个
字符
您分配的 char
类型转换为 char *
由于 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;
}
是否可以扫描一个字符,将其传递给一个字符数组,然后如果 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;
}
您的代码中的错误是:
- 您声明的是一个 char 指针数组,而不是一个 字符
您分配的
char
类型转换为char *
由于 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;
}