回答編集履歴

1

修正

2023/07/07 01:19

投稿

jimbe
jimbe

スコア13318

test CHANGED
@@ -2,8 +2,9 @@
2
2
  文字列は「文字の配列」であり、それが `char line[size];` といった宣言に現れています。
3
3
  おそらく txtArr は「文字列の配列」のつもりと思いますが、 `char txtArr[N];` という宣言は line と全く変わらず、「文字の配列」として宣言されています。
4
4
  また、 strcpy( 及び strcpy_s) の第一引数は文字列へのアドレスのはずです。`char txtArr[N];` の時の `txtArr[i]` は「 i 番目の文字」を表す書き方であり、それをアドレスとして渡すのは最悪システムを壊す行為です。
5
- ファイルから 1 行最大 size 文字で最大 N 行読み込んで保持するのであれば、
5
+ ファイルから 1 行最大 size(-1) 文字で最大 N 行読み込んで保持するのであれば、
6
6
  ```c
7
7
  char txtArr[N][size]; //文字の2次元配列=文字列の1次元配列
8
8
  for(int i=0; i<N && fgets(txtArr[i],size,fp)!=NULL; i++); //この場合の txtArr[i] は i 番目の「文字の配列(=文字列)」のアドレス
9
9
  ```
10
+ といった書き方が必要になります。