Почему я не могу напечатать инициалы имени?
Я пытаюсь написать код, который печатает инициалы с заданным именем? Я получаю ошибку всякий раз, когда я использую '/0' - чтобы инициализировать i-й символ данной строки. Я использую это, чтобы идентифицировать инициалы 2-го слова? Любые предложения, чтобы обнаружить 2-е слово и распечатать инициал 2-го слова? Кроме того, я пытаюсь написать этот код, чтобы он игнорировал любые дополнительные пробелы:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
printf ("Enter you Name:");//print name
string s = get_string(); //get input from user
printf("%c", toupper(s[0])); // use placeholder to call the string
for (int i=0, n = strlen(s); i < n; i++)
{
if (s[i] == '/0')
{
printf("%c", toupper(s[i+1]));
}
}
printf ("\n");
}
2 ответа
Я не уверен, что делает ваша функция get_string(), но она делает то, что вы просите.
int main(void)
{
printf ("Enter you Name:");//print name
char input[100];
cin.getline(input, sizeof(input));
string s(input);
//get input from user
printf("%c", toupper(s[0])); // use placeholder to call the string
for (int i=0, n = s.length(); i < n; i++)
{
if (isspace(s.at(i)))
{
printf("%c", toupper(s[i+1]));
}
}
printf ("\n");
}
Попробуйте использовать "" вместо "/0".
if (s[i] == ' ')
или если вы предпочитаете коды ASCII (пробел 0x20 или 32 в качестве десятичного числа):
if (s[i] == 0x20)
Ваш код будет работать, если между именами будет только 1 пробел. Чтобы избежать этого, следует также проверить условие следующего символа. Если это не пробел, то, вероятно, это "буква":
if (s[i] == 0x20 && s[i+1] != 0x20) {...
Обратите внимание, что цикл for должен останавливаться на i