如何修复此代码以创建字符串数组?
问题描述:
我想创建一个字符串数组。下面是代码:如何修复此代码以创建字符串数组?
#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};
如何纠正呢?
答
如果你想创建串数组,你缺少一个星号,并终止零:
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[] = "..."
构造时,您的字符串文字(包括终止零)的内容被复制到允许您写入的内存中,产生与相同的效果构建。
答
你可以只使用:
const char *array_of_string[] = {"fi", "se", "th"};
int i;
for (i=0;i<3;i++) {
printf("%s\n", array_of_string[i]);
}
如果你想成为简洁
...
答
,你可以使用它像这样:(请注意,如果你想打印一个数组焦炭,U必须有它的 '\ 0')termitated
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;
}
+0
感谢您的答案 – mko 2012-07-27 12:36:23
答
当您指定的字符串作为
char* myString = "abcd";
它创建一个类型数组的指针,并指向字符数组的基地址或第0个元素。所以myString指向一个。 使用一个char *,因为C提供打印出来使用
printf("%s",myString);
而且指针有用的,当你不知道或不想指定字符数组的长度,使用整个阵列的一个好方法是有用的。 如果你这样做
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;
随意标注回答过的问题,如果你满意你的问题应该得到解决。
感谢您指出\ 0终止我的代码中的错误,并且更简单的方法。数组和指针 – mko 2012-07-27 12:34:56
@yozloy之间存在着密切的关系,数组和指针之间存在着密切的关系,但请确保您不会认为它们是相同的常见错误。 – Shahbaz 2012-07-27 12:44:45