#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main(void)
{
string name = get_string();
for(int i=0;i<strlen(name);i++ )
{
//printf("%c\n",name[i]);
if(name[i]=='\0' && name[i+1]!='\0') //try to print the next char of space
{
if(name[i+1]<='z' && name[i+1]>='a')
{
printf("%c",name[i+1]);
}
if(name[i+1]<='Z' && name[i+1]>'A')
{
printf("%c",name[i+1]);
}
}
else;
}
}
get_string()是将用户输入为字符串。
运行之后,它只打印我输入的第一个字符,这意味着循环停止。
我的条件线有什么问题吗?
将for(int i=0;i<strlen(name);i++ )
更改为for(int i=0;i<strlen(name)-1;i++ )
后,它会给我一个分段错误。我会更多地研究它。
答案 0 :(得分:0)
现在我知道为什么了。
我认为'\0'
等于' '
,它们都是字符串和空格的结尾,这是非常错误的。
所有这些都是因为我的英语不好。我从一开始就认识错了。
愚蠢的问题。但我不想删除它,因为像我这样的人可以使用它。
这是我的最终答案。
#include <stdio.h>
#include <cs50.h>
#include <string.h>
void caps(char x);
int main(void)
{
string name = get_string();
if (name!=NULL){
for(int i=0;i<strlen(name);i++)
{
// printf("%c\n",name[i]);
if(i==0&&name[0]!=0)
{
caps(name[0]);
}
if(name[i]==' '&& name[i+1]!=' ') //try to print the next character
{
caps(name[i+1]);
}
}
}
}
void caps(char x)
{
if(x<='z' && x>='a')
{
printf("%c",x-('a'-'A'));
}
if(x>='A' && x<='Z')
{
printf("%c",x);
}
}