Я пытаюсь написать C-программу для печати инициалов имени конечного пользователя с использованием строк и указателей.Я написал в комментариях, что я думаю, что функция должна сделать для иллюстрации.
Вот мой прогресс на данный момент:
#include <stdio.h>
#include <string.h>
#define MAX_BUFFER_LENGTH 31
char userInitials(char *name)
{
// Initialize the character array "name" and set to zero
// Determine the length of the string using strlen
// Print the first valid input of the string
// Loop through the string until a space is found
// When a space is found, print the next valid input
for (int i = 0; i < MAX_BUFFER_LENGTH; i++)
{
name[i] = 0;
}
int length = strlen(name);
if (name[0] != ' ' && name[0] != '\0')
{
printf("%c\n", name[0]);
}
for (int i = 0; i < length; i++)
{
if (i + 1 < length && name[i + 1] != ' ')
{
printf("%c\n", name[i + 1]);
}
}
}
char main()
{
char name[MAX_BUFFER_LENGTH] = " ";
printf("Enter your full name and I'll print your initials: ");
scanf_s("%[^\n]", &name, MAX_BUFFER_LENGTH);
printf("Your name is: %c\n", name);
printf("Your initials are: %c\n", userInitials(name));
}
Моя программа в настоящее время застряла в строке 42:
printf("Your initials are: %s\n", userInitials(name));
Visual Studio возвращает сообщение об ошибке:
(42): warning C4477: 'printf' : format string '%s' requires an argument of type 'char *', but variadic argument 1 has type 'int'.
Я также не уверен, будет ли функция работать, потому что в строке 33 есть ошибка, которую я не понимаю(Я публикую строки 26-33 для иллюстрации):
for (int i = 0; i < length; i++)
{
if (i + 1 < length && name[i + 1] != ' ')
{
printf("%c\n", name[i + 1]);
}
}
}
Visual Studio возвращает сообщение об ошибке: (33): предупреждение C4716: 'userInitials': должно возвращать значение .
Я действительно изо всех сил пытаюсь заставить это работать, и мои преподаватели не очень хороши в объяснении, как решить сообщения об ошибках.Буду очень признателен за ваше время и помощь.