Мой код дает ошибку времени выполнения, когда я достигаю середину файла. Если я изменяю значения temp2 или temp1, то он сбрасывается в начале файла. Я не могу понять ошибку, которую я делаю в этом файле.Ошибка времени выполнения в C
Он работает гладко на небольшом файле, который имеет 100 строк.
Я делаю проект поиска файлов, поэтому мне нужно хранить большие файлы, содержащие каталоги всех дисков.
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
char file[99999];
void brek(char *p, char *q);
void main()
{
FILE *fp;
int x = 0, y = 0;
int a = 0, b = 0;
int g = 0;
char temp1[10000]; // temp1 is simply for jumping to the date against the given directory or file
// the main array storing the lines is temp2.
char temp2[1000][1000];
system("chdir C:\\Users\\Faraz\\Documents && dir /s > dir.txt");
fp = fopen("C:\\Users\\Faraz\\Documents\\dir.txt", "r");
while ((y = getc(fp)) != EOF)
{
file[x] = y;
x++;
}
fclose(fp);
file[x] = '\0';
puts(&file[0]);
// <----the copying of the file to the string "file (globally declared)"is
// done---->//
getche();
system("cls");
// <-------------------start loop-------------------->//
a = 0;
while (file[a] != '\0') // <-------starting of the loop
{
while (file[a] != '/')
{
temp1[a] = file[a];
a++;
}
temp1[a] = '\0';
a = a - 2;
b = 0;
while (file[a] != '\n')
{
temp2[g][b] = file[a];
b++;
a++;
}
temp2[g][b] = '\0';
puts(&temp2[g][0]);
g++;
}
// <-----------------end loop---------------------->//
}
Почему вы используете систему, если системные вызовы будут лучше? –
Вам нужно динамическое распределение памяти. –
Да, выше комментариев применяются, но главная проблема заключается в том, что вы используете переменную 'a' для разных вещей в основном цикле: она индексирует как' файл', так и 'temp1'. –