Ошибка проверки времени выполнения # 2 - Обнуление переменной «имя файла» было повреждено.Ошибка проверки времени выполнения # 2 в C Обработка файлов
Мой код работает всякий раз, когда я пытаюсь обработать первое место памяти. Я могу обработать файл .txt правильно, и я могу его распечатать. Тем не менее, когда я запрашиваю вторую ячейку памяти, программа вылетает из строя. Я попытался увеличить размер имени файла, и я также закрываю первый файл, поэтому я не знаю. Любая помощь приемлема! Спасибо!!
Это мой код:
#include <stdio.h>
#define SIZE 100 //100 entries (100lines on a file)
#define SENSORN 100
int main()
{
FILE *fptr;
char filename[1000];
char dummy1[1];//dummy character that help me to erase what is the buffer when using gets()
int numberOfSensors;
int time[SENSORN][SIZE];
float powerConsumption[SENSORN][SIZE];
int sensor_num;
int count1 = 0;
printf("Please enter the number of sensors: ");
scanf("%d", &numberOfSensors);
//Asking for the link
//numberOfSensors - 1 because for example, if we want only 2 sensors we need sensor0 and sensor1 only
for (sensor_num = 0; sensor_num <= (numberOfSensors - 1); sensor_num++)
{
printf("Please enter the file location for sensor %d\n", sensor_num);
gets(dummy1);//clearing the buffer
gets(filename);
fptr = fopen(filename, "r");
//if file cannot be opened, then display and error message
if (fptr == NULL)
{
printf("Error opening the file! %s \n", filename);
printf("Please restart the program \n");
return 0; //exit the program
}
else
{
//Loop that let us read and print all the file by storing each value to its respective array
while (!feof(fptr))
{
//storing all the values in their respective array
//sensor_num is the sensor number
//count1 is the line number we are reading from the file
fscanf(fptr, "%d %f", &time[sensor_num][count1], &powerConsumption[sensor_num][count1]);
//making sure we have all the values stored
//Note: do not comment the following line in order to check that all values are stored
fprintf(stdout, "%d %6.2f \n", time[sensor_num][count1], powerConsumption[sensor_num][count1]);
count1++;
}
}
//closing file
fclose(fptr);
}
}
}
«символ dummy1 [1] нет, нет! –
Если вы только что набрали [256], по умолчанию у вас не возникло бы проблемы с завершением NULL-терминатора вне пределов! –