二次元配列のデータ格納についてです。
下記コードで文字列を入力すると
&n[0][0]→一度目入れた文字列
&n[1][0]→二度目入れた文字列
&n[2][0]→三度目入れた文字列
・
・
・
のように格納されていくと考えているのですが
結果を見るとhikaku関数に渡した際、&s1[0]の時に入力した全ての文字が表示されていました。
&s1[1]にすると、先頭文字だけ表示されていません。
これは二次元配列だった文字列が、関数に渡った際に普通の配列に変わったと言うことでしょうか?
#include <stdio.h>
void hikaku(char *s1,int k);
void hikaku(char *s1, int k){
printf("関数に移した後%s\n",&s1[0]);
}
int main(void){
char str[1000]; int i; int k; int j; char n[20][20]={}; fgets(str, sizeof(str), stdin); sscanf(str,"%d",&i); printf(" 入力する回数は %d\n",i); for(k=0;k<i;k++){ fgets(str, sizeof(str), stdin); sscanf(str,"%s",&n[k][0]); printf("直後%s\n",&n[k][0]); } for(j=0;j<i;j++){ hikaku(n[j],i); } return 0;
}
入力値--------------------------------
4
Jimmy
Bob
James
Jimmy
実行結果-------------------------------
入力する回数は 4
直後Jimmy
直後Bob
直後James
直後Jimmy
関数に移した後Jimmy
関数に移した後Bob
関数に移した後James
関数に移した後Jimmy
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/03 02:47
2020/05/16 13:41