如何修复此代码以创建字符串数组?

时间:2012-07-27 12:13:38

标签: c arrays

我想创建一个字符串数组。这是代码:

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

如何更正?

5 个答案:

答案 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;

如果您满意,请随时将问题标记为已解答。