FILE* openInputFile()
{
printf("Enter the name of the input file: ");
char* inputFileName;
scanf("%s", &inputFileName);
printf("%s", inputFileName);
if (strstr(inputFileName, ".txt") == NULL)
inputFileName = strcat(inputFileName, ".txt");
printf("%s", inputFileName);
FILE* inputFile = fopen(inputFileName, "r");
return inputFile;
}char* inputFileName;
scanf("%s", &inputFileName);char* inputFileName;
scanf("%s", inputFileName);
printf("\n%s", inputFileName);, то всё отрабатывает правильно.char* outputFileName;
scanf("%s", outputFileName);, то получаю ту же ошибку, хотя код вроде бы идентичный.
inputFileName = strcat(inputFileName, ".txt");
А как в таком случае выделить динамическую память для самого файла? (он весит аж 160 кБ)malloc, free/new, delete [].
void readInputFile(FILE* inputFile, Dictionary* dict)
{
char* word;
while (fscanf(inputFile, "%s", &word)) {
if (!hasKey(dict, word))
put(dict, word, 1);
else {
DictElement* currentElement = dict->head;
while (currentElement != NULL) {
if (currentElement->key == word) {
currentElement->value++;
break;
}
currentElement = currentElement->nextElement;
}
}
}
}А сам файл при открытии (до начала чтения) выгружается в память или хранится только указатель на него?Только указатель (дескриптор).
Я понял, что должен поправить чтение wordДа. И так же выделить память под word.
FILE* openInputFile()
{
printf("Enter the name of the input file: ");
char* inputFileName = malloc(256 * sizeof(char));
scanf("%s", inputFileName);
if (strstr(inputFileName, ".txt") == NULL)
inputFileName = strcat(inputFileName, ".txt");
FILE* inputFile = fopen(inputFileName, "r");
free(inputFileName);
return inputFile;
} char* inputFileName = malloc(256 * sizeof(char));sizeof(char)? Имеет ли смысл произведение в этом месте?inputFileName = strcat(inputFileName, ".txt");char* inputFileName;
char inputFileName[256];char *inputFileName;
inputFileName = (char *) calloc(256, 1);Чайники обычно делают так:
кто поумнее делают так
Пользователь с клавиатуры может вводить строку какой угодно длинны