我正在尝试编写打印给定名称首字母的代码? 每当我使用"/0"初始化给定字符串的第 i 个字符时,我都会收到错误。我用它来识别第二个单词的首字母?有什么建议可以检测第二个单词并打印第二个单词的首字母吗?此外,我正在尝试编写此代码,以便它忽略任何其他空格:
#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");
}
我不确定您的 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