Окончательный возврат программы из функции в C - PullRequest
0 голосов
/ 31 октября 2019

Я бы хотел завершить программу сообщением об ошибке и вернуть значение 100 изнутри функции:

    void readSize(int *rows, int *cols) {
        while(!(scanf("%d %d", rows, cols))) {
            fputs("Error: Incorrect input!\n", stderr);
            return 100;
        }
    }

Я хочу, чтобы возвращаемый результат возвращал 100, как если бы он был из main (), если вызнаешь что я имею ввиду. Я пытался перейти, но он не может переключаться между функциями. Есть идеи?

1 Ответ

1 голос
/ 31 октября 2019

от Стива Саммита в комментариях. Просто используйте exit(100)

Функция, которую вы ищете: exit(). В качестве аргумента вы передаете код возврата, который хотите вернуть. Для этого есть стандартные макросы, например EXIT_SUCCESS или EXIT_FAILURE, но вы можете выбрать int на ваш выбор. При использовании в функции main, exit(x) эквивалентно return x.

Вы можете прочитать о функции выхода здесь: https://port70.net/~nsz/c/c11/n1570.html#7.22.4.4

Другая деталь в том, что while(!(scanf("%d %d", rows, cols))) не так. Если оба row и cols успешно назначены, scanf вернет 2. Конечно, то, что вы написали, будет считаться успешным, если оно вернет 2, но оно будет делать то же самое, если вернет 1, что должно бытьрассматривается как неудача. Вместо этого сделайте while(!(scanf("%d %d", rows, cols)) == 2), или даже лучше, если это соответствует вашим потребностям, рассмотрите комбинацию fgets и sscanf, как описано здесь

...