LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Поскольку твой Linux скорее всего Windows судя по этому треду или ты wine-gcc собираешь, но тогда разницы не много с Windows, то попробуй так:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

int main() {
    setlocale(LC_ALL, ".866"); // or, at least, LC_CTYPE

    char name[256]; char agestr[3]; int age;
    printf("Привет, как вас зовут? ");
    fgets(name, sizeof(name), stdin); // по идее fgetws должен уметь читать юникод
    {
        const size_t ln = strlen(name);
        if (ln > 0 && name[ln-1] == '\n')
            name[ln-1] = '\0';
    }
    printf("Очень приятно, %s, сколько вам лет? ", name); // если в name кириллица, то ничего не выводит вместо %s
    fgets(agestr, sizeof(agestr), stdin);
    age = atoi(agestr);
    if (age == 18)
        printf("Мне столько же! Просто прекрасно!");
    else
        printf("Мне 18 лет. Я на %i лет/года %s вас!", abs(age-18), ((age>18)? "младше" : "старше"));
}

Файл сохраняй в кодировке CP866.

У меня работает: https://imgur.com/a/gkw2EyL

Исходная версия fsb4000, :

Поскольку твой Linux скорее всего Windows судя по этому треду или ты wine-gcc собираешь, но тогда разницы не много с Windows, то попробуй так:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

int main() {
    setlocale(LC_ALL, ".866"); // or, at least, LC_CTYPE

    char name[256]; char agestr[3]; int age;
    printf("Привет, как вас зовут? ");
    fgets(name, sizeof(name), stdin); // по идее fgetws должен уметь читать юникод
    {
        const size_t ln = strlen(name) - 1;
        if (name[ln] == '\n')
            name[ln] = '\0';
    }
    printf("Очень приятно, %s, сколько вам лет? ", name); // если в name кириллица, то ничего не выводит вместо %s
    fgets(agestr, sizeof(agestr), stdin);
    age = atoi(agestr);
    if (age == 18)
        printf("Мне столько же! Просто прекрасно!");
    else
        printf("Мне 18 лет. Я на %i лет/года %s вас!", abs(age-18), ((age>18)? "младше" : "старше"));
}

Файл сохраняй в кодировке CP866.

У меня работает: https://imgur.com/a/gkw2EyL