私は現在、ファイルから文字列を読み込んで2次元配列に格納するプログラムに取り組んでいます。しかし、配列の内容を出力しようとすると、毎回ランダムな文字が得られます。私は私が間違って私の2次元配列に文字列を挿入していたためであると疑われる文字列を配列に出力するときに奇妙な文字がありますか?
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
FILE* file_pointer;
char user_input[80];
char line[81];
char all_lines_array[100][81];
int total_lines = 0;
while (1){
printf("Please enter a command: ");
scanf("%s", &user_input);
if (strstr(user_input, "read") != NULL){
file_pointer = fopen("C:\\Users\\Tyler\\Desktop\\Hello.txt","r");
while (fgets(line, 100, file_pointer)) {
line[strlen(line)+1] = "\0";
*all_lines_array[total_lines] = line; //My guess is this is wrong
total_lines++;
}
fclose(file_pointer);
}
}
return 0;
}
、私はそれが私が間違ってやっている何であるか見当がつかない:ここに私のコードです。私はファイル内に最大100行しか存在できないように番号を設定しており、各行の長さは80文字(末尾には"\0"
)しかありません。
John Doe 1221 Washington St. 1234567
Jane Doe 1233 Washington St. 1234568
Cain Doe 1234 Washington St. 1234569
ありがとうは、strcpyのは、働いていました。 strcpyは何をしているのでしょうか? – MistFTW
私はCをプログラムしなければならなかったが、私はいつも[cppreference](http://en.cppreference.com/w/)や[cplusplus](http://www.cplusplus.com/)のstrcpyのような機能を調べた。あなたは例を含めて必要なすべての情報を手に入れます! – Maxincredible52
@MistFTW 1つのC文字列/配列から別の文字列にデータをコピーします。 ''\ 0''のターミネータ文字がない場合、プロセス内のメモリを破壊する可能性があります。あなたが本当に盲目的に信頼するのではなく、答えを評価するためにドキュメントを本当に読まなければならない理由の1つです! (これは致命的な欠陥ではなく、インターネット上のランダムなコードを 'その言葉'とするのは賢明ではありません!) – user268396