OccamaRazor
@OccamaRazor

Неправильная работа кода, почему всегда срабатывает «else»?

Всегда после ввода данных срабатывает "else", хотя файл благополучно создаётся и в него заносится введённые данные, как исправить? Может условие не верное?
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string.h>

#define FILENM "some.txt"

int main()
{
	FILE* fp = fopen(FILENM, "a");
	puts("What's your name?");
	char name_buf[100];
	fgets(name_buf, 100, stdin);
	puts("What's your birthday?");
	char date_buf[100];
	fgets(date_buf, 100, stdin);
	int name_bytes = fputs(name_buf, fp);
	int bday_bytes = fputs(date_buf, fp);
	if ((name_bytes>0) && (bday_bytes>0)) {
		printf("okay,wrote name and bday to the file %s\n", FILENM);
	}
	else {
		printf("UHHH...You wrong");
	}
	system("pause");
}
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Return Value
On success, a non-negative value is returned.
On error, the function returns EOF and sets the error indicator (ferror).

Так что норма.

Надо писать
if (name_bytes >= 0 && bday_bytes >= 0) {
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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