@rsatarov

В чем заключается ошибка в чтении текста из файла (Си)?

Собственно, код.

open me
#include <stdio.h>

char * getStringByPath(char *filePath);

int main() {
	char *filePath = "D:/test/input.txt";

	char *result = getStringByPath(filePath);

	return 0;
}
char *getStringByPath(char *filePath) {
	FILE *inputFile;
	char *resultString = NULL;

	errno_t err = fopen_s(&inputFile, filePath, "r");
	if (!err) {
		fscanf_s(inputFile, "%s", resultString, __crt_countof(resultString));
	}

	return resultString;
}


При чтении из файла получается такая ошибка
Vo9DbDaq2nE.jpg
В дебаге показало, что проблема в строке с fscanf_s. Но вот только в чем проблема?
  • Вопрос задан
  • 169 просмотров
Решения вопроса 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
char *resultString = NULL;

Вы читаете в невалидный буфер.
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
Нельзя считывать данные в указатель. Для этого нужно определить массив, установить сколько места в нем в памяти согласно содержимому файла и только потом заполнять его. Язык C не терпит абстракных описаний, все должно быть предельно четко описано.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы