Не получается преобразовать Ф.И.О в инициалы. Язык C

Пользователь вводит в консоли Фамилию, Имя, Отчество. Нужно преобразовать в следующий вид: Фамилия И.О. и вывести это.

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

int main()
{
    system("chcp 1251");
    setlocale(LC_ALL,"Russian_Russia.1251");
    char n[]={}, f[]={}, o[]={} ;
    printf("Имя:");
    scanf("%s",n);
    printf("Фамилия:");
    scanf("%s",f);
    printf("Отчество:");
    scanf("%s",o);
    printf("Фамилия И.О.:%s %c %c",f,n[0],o[0]);
    return 0;
}

Я сделала это. Выводит отчество и его инициалы, а не Фамилия И.О.


Ответы (2 шт):

Автор решения: Harry

А место кто выделять будет?

char n[]={}, f[]={}, o[]={}

У вас же просто пустые множества, вы пишете в невыделенную память, получаете неопределенное поведение. Не повезло - программа не вылетела, а просто стала неверно работать...

Сделайте что-то типа

char n[100], f[100], o[100];

Ну, 100 - это я так, с запасом :)

→ Ссылка
Автор решения: Qwertiy
char n[]={}, f[]={}, o[]={} ;

В массивы из 0 байт никакие данные не лезут. Надо выделять достаточно памяти:

char n[256], f[256], o[256];
→ Ссылка