Не получается преобразовать Ф.И.О в инициалы. Язык 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];