我想创建一个字符串数组。这是代码:
#include <stdio.h>
int main(void){
char str1[] = {'f','i'};
char str2[] = {'s','e'};
char str3[] = {'t','h'};
char arry_of_string[] = {str1,str2,str3};
printf("%s\n",arry_of_string[1]);
return 0;
}
这条线不起作用:
char arry_of_string[] = {str1,str2,str3};
如何更正?
答案 0 :(得分:6)
如果您想创建字符串的数组,则缺少星号,并终止零:
char str1[] = {'f','i','\0'};
char str2[] = {'s','e','\0'};
char str3[] = {'t','h','\0'};
char *arry_of_string[] = {str1,str2,str3};
还有一种更简单的方法来处理单个字符串:
char str1[] = "fi";
char str2[] = "se";
char str3[] = "th";
char *arry_of_string[] = {str1,str2,str3};
当您使用char x[] = "..."
构造时,字符串文字的内容(包括终止零)将被复制到您可以写入的内存中,从而产生与char x[] = {'.', '.', ... '\0'}
构造相同的效果。
答案 1 :(得分:2)
你可以像这样使用它:(请注意,如果你想打印一个char数组,你必须用'\ 0'来表示它)
int main()
{
char str1[] = {'f','i','\0'};
char str2[] = {'s','e','\0'};
char str3[] = {'t','h','\0'};
char* arry_of_string[] = {str1,str2,str3};
for (int i=0;i<3;i++)
{
printf("%s\n",arry_of_string[i]);
}
return 0;
}
答案 2 :(得分:1)
您可能在这里寻找pointer而不是直接数组。
char *arry_of_string[] = {str1,str2,str3};
数组是值的集合,指针是包含值的地址列表,因此char指针是指向包含字符串(字符数组)的数组地址的指针。 并呼吸
答案 3 :(得分:1)
你可以使用:
const char *array_of_string[] = {"fi", "se", "th"};
int i;
for (i=0;i<3;i++) {
printf("%s\n", array_of_string[i]);
}
如果你想简明扼要......
答案 4 :(得分:0)
将字符串指定为
时char* myString = "abcd";
它创建一个类型为array的指针,并指向基本地址或字符数组的第0个元素。所以myString指向一个。 使用char *非常有用,因为c提供了一种使用
打印整个数组的好方法printf("%s",myString);
当你不知道或不想指定char数组的长度时,指针也很有用。 如果你这样做,你的问题应该解决
char *str1 = "fi";
char *str2 = "se";
char *str3 = "th";
char* arry_of_string[] = {str1,str2,str3};
int i;
for (i=0;i<3;i++)
{
printf("%s\n",arry_of_string[i]);
}
return 0;
如果您满意,请随时将问题标记为已解答。