コード内に2つの2D配列を設定しました.1つはIDの配列を格納し、もう1つはパスワードの配列を格納します。私はフォーマットでテキストファイルから読み取るしようとしています:ファイルから読み込んでC言語で2D配列に格納
ID1 PASSWORD1
ID2 PASSWORD2
ID3 PASSWORD3
ID4 PASSWORD4
ID5 PASSWORD5
は、これは私のコードです:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_RECORDS 100
#define MAX_INPUT 40
void readFile();
void inputInit();
void DBInit();
void init();
FILE *fp;
char **IDArray;
char **passwordArray;
char *IDInput;
char *passInput;
int main(){
init();
readFile();
return 0;
}
void readFile(){
fp = fopen("Database_Table.txt","r");
char line[MAX_INPUT];
if(fp == NULL){
perror("Error in opening file");
}
else{
int i;
while(!feof(fp)){
fgets(line,sizeof(line),fp);
sscanf(line,"%s\t%s",IDInput,passInput);
IDArray[i] = IDInput;
passwordArray[i] = passInput;
i++;
}
}
fclose(fp);
}
void init(){
DBInit();
inputInit();
}
void inputInit(){
IDInput = (char*)malloc(sizeof(char) * MAX_INPUT);
passInput = (char*)malloc(sizeof(char) * MAX_INPUT);
}
void DBInit(){
IDArray = (char**)malloc(sizeof(char*) * MAX_RECORDS);
passwordArray = (char**)malloc(sizeof(char*) * MAX_RECORDS);
int i,j;
for(i=0;i<MAX_RECORDS;i++){
IDArray[i] = (char*)malloc(sizeof(char) * MAX_INPUT);
passwordArray[i] = (char*)malloc(sizeof(char) * MAX_INPUT);
}
}
私の問題は、何らかの理由で、私は私がしようとするとセグメンテーションフォールトを取得しておく、ということですIDとパスワードを保存します。この問題を解決するための助けがあれば幸いです。
2D配列はありません。コード内で1つまたは1対1を表すことはできません。ポインタは配列ではありません! – Olaf