crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Почему изменяется глобальный двухмерный массив типа char?, Я его не изменяю, а значения меняются
zuze
  опции профиля:
сообщение 14.1.2013, 9:09
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня есть функция MyNameFile()

char NameFiles[670][12]; // Глобальный массив

// Это функция-слот запускается по нажатию кнопки
void l::MyNameFile()
{
    struct _finddata_t f;
    long int hFile;
    int k = 0;
    chdir("file");
    hFile = _findfirst("*.dat", &f);
    int KolAllFile = hFile;

    while (KolAllFile != -1)
    {
        FILE *fp = fopen(f.name, "rb");
        if (fp == NULL)
           qDebug() << "Cannot open file read!";

        strcpy(NameFiles[k], f.name);
        qDebug() << NameFiles[k] << k << endl;
        k++;
        fclose(fp);
        KolAllFile = _findnext(hFile, &f);
    }
    _findclose(hFile);
}


Тут выводиться всё правильно. То есть NameFiles[0] имя первого файла, NameFiles[1] имя второго файла и т.д.
Но когда я NameFiles[k] использую в других функциях, например в другой функции-слот, то в NameFiles[0] лежит имя первого файла плюс имена всех остальных файлов, NameFiles[1] лежит имя второго файла плюс имена всех остальных файлов и т.д.

Вопросы:
1. Почему так происходит?
2. Как сделать чтобы этого не было?

Я лично не представляю почему значения меняются, помогите пожалуйста разобраться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 14.1.2013, 11:15
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вопрос решён. Я не учитывал '\0'. Я сделал так

char NameFiles[670][13]; // Глобальный массив
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 14.1.2013, 13:04
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  




в файле храни в текстовом формате, будет гораздо меньше гемора )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.4.2024, 18:49