У меня возникли проблемы с попыткой печати некоторых узлов дерева. Функция Printf печатает все правильно на терминале, но fputs и 2 версии fprintf только печати:fprintf в C не печатает правильно
вопрос: жир вопрос: жир объект: Pete объект: Pete вопрос: круглый вопрос: круглый объект : пицца объект: пицца объект: ящер объект: ящер
$ кошка test.txt вопрос: жир вопрос: жир унд Golin
Вот код:
void treePrint(struct node *ptr)
{
if (ptr == NULL)
printf("ERROR!!!");
else
{
char line[1000];
char filename[] = "test.txt";
FILE *file = fopen(filename, "w");
if (!file)
{
fprintf(stderr, "can't open %s for writing\n", filename);
exit(-1);
}
if (ptr -> yes_ptr != NULL && ptr -> no_ptr != NULL)
{
strcpy(line, "question: ");
strcat(line, ptr -> questionName);
strcat(line, "\n");
printf("%s", line);
fprintf(file, "%s", line);
fputs (line, file);
fprintf(file, "question: %s\n", ptr -> questionName);
treePrint(ptr -> yes_ptr);
treePrint(ptr -> no_ptr);
}
else
{
strcpy(line, "object: ");
strcat(line, ptr -> objectName);
strcat(line, "\n");
printf("%s", line);
fprintf(file, "%s", line);
fputs (line, file);
fprintf(file, "object: %s\n", ptr -> objectName);
}
fclose(file);
}
}
Не должно быть. Возможно, попробуйте 'fprintf' с 'stdout' для вывода, таким образом, они выведут на консоль так же, как' printf', так что вы увидите. – Jubatian
Заменить 'fprintf (stderr," не может открыть% s для записи \ n ", filename)' с 'perror (filename)'. Попробуй. Тебе понравится. –
Я попытался с помощью stdout, он отлично работает, как и printf. Так проблема с файлом? – user3143696