Я установил в своем коде 2 2D-массива, один для хранения массива идентификаторов, а другой для паролей. Я пытаюсь читать из текстового файла с форматом:Чтение из файла и сохранение в 2D-массив в C
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);
}
}
Моя проблема заключается в том, что, по некоторым причинам, я получаю ошибку сегментации, когда я пытаюсь для хранения идентификаторов и паролей. Любая помощь в решении этой проблемы будет высоко оценена.
Нет двухмерного массива, ничего, что может представлять один или указать на один в коде. Указатель не является массивом! – Olaf