4

文字列の配列を作成したい。コードは次のとおりです。

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

どうすれば修正できますか?

4

5 に答える 5

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'}

于 2012-07-27T12:15:44.537 に答える
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;

}
于 2012-07-27T12:20:17.357 に答える
1

直接配列ではなく、ここでポインタを探している可能性があります。

char *arry_of_string[] = {str1,str2,str3};

配列は値のコレクションであり、ポインターは値を含むアドレスのリストであるため、charポインターは、文字列を含む配列(文字配列)のアドレスへのポインターです。呼吸する

于 2012-07-27T12:17:52.337 に答える
1

あなたはただ使うことができます:

const char *array_of_string[] = {"fi", "se", "th"};

int i;
for (i=0;i<3;i++) {
    printf("%s\n", array_of_string[i]);
}

簡潔にしたい場合は...

于 2012-07-27T12:18:21.927 に答える
0

文字列を次のように指定する場合

char* myString = "abcd";

配列型のポインタを作成し、ベースアドレスまたは文字配列の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;

満足している場合は、回答した質問に自由にマークを付けてください。

于 2012-07-27T16:05:25.560 に答える