0

文字の配列の要素を取得したいのですが、まったく成功しません。問題は、最初と最後の要素のみを取得し、それ以上のものを取得しないことです。私のコードは次のとおりです。

void getcharacters(char *cad)
{
 int l;
 int *i;
 l=strlen(cad);
 for (i=&cad[0];i<&cad[l];i++){
     printf("%c\n",*cad);
 }
}

助けはありますか?ありがとう

4

4 に答える 4

4

an のサイズintは、 a のサイズの 4 倍の大きさになる可能性があるcharため、i++実際には 3 文字をスキップしていることになります。

*cadまた、代わりに印刷します*i

i変更を修正して代わりにchar*印刷するには*i*cad

于 2012-12-13T03:42:25.823 に答える
2

すべての printfに同じ文字 (*cadまたは) を使用しています。cad[0]必要なのは、インデックスを使用して、各反復で次の文字を取得することです。また、私はcharへのポインタである必要があります:

void getcharacters(char *cad)
{
 int l;
 char *i;
 l=strlen(cad);
 for (i=&cad[0];i<&cad[l];i++){
     printf("%c\n", *i );
 }
}
于 2012-12-13T03:43:07.647 に答える
2

最初の文字から最後の文字まで繰り返し、配列インデックスとしてアクセスしてみませんか

int i;
int l=strlen(cad);
for (i=0;i<l;i++)
{
  printf("%c\n",cad[i]);
}
于 2012-12-13T03:43:36.527 に答える
1

他の答えは、なぜそれがうまくいかないのかを教えてくれました.nullターミネータまで繰り返していないのはなぜですか?

void getcharacters(char *cad)
{
 char *i;
 for (i = cad; *i; i++) {
     printf("%c\n",*i);
 }
}
于 2012-12-13T03:46:48.790 に答える