Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2013, 14:26   #1
ProProgrammist
Новичок
Джуниор
 
Регистрация: 04.01.2013
Сообщений: 1
По умолчанию Непонятная проблема.

В общем, пишу я РГР, но пока имею только минимальные знания о языке Си.

Код:
#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;
		}
	}
}
На скрине все поймете. Сначала как видите, программа считывает данные из файлов нормально, а вот с записью в массив - вот с этим какая то проблема.

Может, вообще заново начать всё писать?
Изображения
Тип файла: jpg Безымянный.jpg (127.7 Кб, 118 просмотров)

Последний раз редактировалось ACE Valery; 04.01.2013 в 17:19.
ProProgrammist вне форума Ответить с цитированием
Старый 04.01.2013, 15:57   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
int getWordArray(char* wordCategoryArray[10][MAX_ARRAY_SIZE], .....
{
    ...... 
     char word[MAX_STRING_SIZE];

    ......
     wordCategoryArray[i][j] = word;  // Что тут должно произойти по вашему?
    ......
}
EUGY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ - непонятная проблема Namolem Помощь студентам 7 16.09.2011 00:56
Непонятная проблема CrazyDude Работа с сетью в Delphi 2 02.04.2010 00:35
Непонятная проблема с циклом RIO Общие вопросы Delphi 3 31.01.2010 23:29
Непонятная проблема. ROD Компьютерное железо 17 05.09.2009 11:09