В общем, пишу я РГР, но пока имею только минимальные знания о языке Си.
Код:
#include <stdio.h>
#include <string.h>
#define MAX_STRING_SIZE 128
#define MAX_ARRAY_SIZE 256
#define PATH "D:\\Programs & Drivers\\Student\\C\\RGR\\Debug\\categories\\"
#define CATEGORIES_FILE_NAME "categories_info.txt"
void deleteTransfer(char sourceString[MAX_STRING_SIZE]);
void printWordArray(char* wordCategoryArray[10][MAX_ARRAY_SIZE]);
int getWordArray(char* wordCategoryArray[10][MAX_ARRAY_SIZE], char categoryName[MAX_STRING_SIZE], int i);
int main()
{
int i = 0;
char stringFromFile[MAX_STRING_SIZE];
char filePathName[MAX_STRING_SIZE] = PATH;
char* wordCategoryArray[10][MAX_ARRAY_SIZE];
FILE *mainInfoFile = NULL;
strcat(filePathName, CATEGORIES_FILE_NAME);
fopen_s(&mainInfoFile, filePathName, "r");
if (mainInfoFile == NULL)
{
printf("File categories_info.txt wasn't opened");
getchar();
return -1;
}
while (!feof(mainInfoFile))
{
fgets(stringFromFile, MAX_STRING_SIZE, mainInfoFile);
wordCategoryArray[i][0] = stringFromFile;
getWordArray(wordCategoryArray, stringFromFile, i);
i++;
}
printWordArray(wordCategoryArray);
getchar();
return 0;
}
int getWordArray(char* wordCategoryArray[10][MAX_ARRAY_SIZE], char categoryName[MAX_STRING_SIZE], int i)
{
FILE *categoryFile;
FILE *wordFile;
char word[MAX_STRING_SIZE];
char wordFileName[MAX_STRING_SIZE];
char categoryFilePath[MAX_STRING_SIZE] = PATH;
int j = 1;
deleteTransfer(categoryName); /* удаляем пробел */
strcat(categoryFilePath, categoryName); /* соединяем с папкой */
strcat(categoryFilePath, "\\info.txt");/* и файлом с информацией*/
fopen_s(&categoryFile, categoryFilePath, "r"); /* открываем для чтения */
if (categoryFile == NULL) /* если не открылась то выход */
{
printf("cannot open category file %s\n", categoryFilePath);
return -1;
}
else
{
printf("file opened %s\n", categoryFilePath);
}
while (!feof(categoryFile))
{
char wordFilePath[MAX_STRING_SIZE] = PATH;
strcat(wordFilePath, categoryName);
fgets(wordFileName, MAX_STRING_SIZE, categoryFile);
strcat(wordFilePath, "\\");
strcat(wordFilePath, wordFileName);
fopen_s(&wordFile, wordFilePath, "r");
if (wordFile != NULL)
{
printf("file opened %s\n", wordFilePath);
while (!feof(wordFile))
{
fgets(word, MAX_STRING_SIZE, wordFile);
printf("wordCategoryArray i = %d j = %d = %s\n", i, j, word);
wordCategoryArray[i][j] = word;
j++;
}
}
else
{
printf("cannot open %s\n", wordFilePath);
}
}
return 0;
}
void printWordArray(char* wordCategoryArray[10][MAX_ARRAY_SIZE])
{
int i = 0;
int j = 0;
for (; i != 2; i++)
{
for (j = 0; j < 2; j++)
{
printf("word i = %d, j = %d = %s \n", i, j, wordCategoryArray[i][j]);
}
}
}
void deleteTransfer(char sourceString[MAX_STRING_SIZE])
{
int i = 0;
for (; sourceString[i] != '\0'; i++)
{
if (sourceString[i] != '\n')
{
}
else
{
sourceString[i] = '\0';
break;
}
}
}
На скрине все поймете. Сначала как видите, программа считывает данные из файлов нормально, а вот с записью в массив - вот с этим какая то проблема.
Может, вообще заново начать всё писать?