我正在试着写一个打印给定名字的首字母的代码?每当我使用'/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");
}发布于 2017-04-10 18:58:15
请尝试使用‘’而不是'/0‘。
if (s[i] == ' ')或者,如果您喜欢使用ASCII代码(十进制空格为0x20或32 ):
if (s[i] == 0x20)如果名称之间只有1个空格,那么您的代码将正常工作。为了避免这种情况,条件还应该检查下一个字符。如果它不是一个空格,那么它可能是一个“字母”:
if (s[i] == 0x20 && s[i+1] != 0x20) {...注意,for循环应该在i
发布于 2017-04-10 19:01:43
我不确定你的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");
}https://stackoverflow.com/questions/43321113
复制相似问题