-1

この配列を と呼びarr_[6]、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 に答える