-1

我有一个名为 的数组arr_[6],有一个包含六个字符串的想法……但是当我声明这个数组时,编译器会抛出错误。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;

    char arr_1[]= {"My_name","your Name", "His Name"};


    char *arr_p;

    arr_p = malloc(sizeof(char)*6);

    arr_p = arr_1;

    printf("%s\n",*arr_p);


    system("PAUSE"); 

    return 0; 
}

显示的错误如下:

> main.c: In function `main': main.c:9: error: excess elements in char
> array initializer main.c:9: error: (near initialization for `arr_1')
> main.c:9: error: excess elements in char array initializer main.c:9:
> error: (near initialization for `arr_1')
> 
> make.exe: *** [main.o] Error 1

请帮我!

4

2 回答 2

1
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;
    const char *arr_1[]= {"My_name","your Name", "His Name"}; // has to be an array of <char *>

    //arr_p is not necessary

    printf("%s\n",*arr_1); // will print the first string, "My_name"
    printf("%s\n",arr_1[1]); // will print the second string, "your Name"
    printf("%s\n",arr_1[2]); // will print the third string, "His Name"
    system("PAUSE"); 
    return 0; 
}
于 2013-03-05T05:15:36.250 回答
0

我相信您正在寻找的是:

#include <stdio.h>
#include <stdlib.h>


int main()
{
    int i;
    char* arr_1[]= {"My_name","your Name", "His Name", NULL};
    char** arr_p;

    arr_p = arr_1;

    i = 0;
    while (arr_p[i] != NULL)
    {
        printf("%s\n",(arr_p[i]));
        ++i;
    }

   system("PAUSE"); 
   return 0; 
}

这些是我所做的更改列表:

  1. 用于char* arr_1[]声明字符串数组,因为每个字符串都是字符数组。
  2. 如果需要指向 char* 的指针,则需要将指针声明为数据类型char**
  3. 使用 NULL 作为数组中的最后一个元素,以便您知道何时到达字符串数组的末尾。
  4. 使用while循环遍历所有字符串。
于 2013-03-05T05:20:26.383 回答