程序的正确运行示例:
输入第一个字符串:my hometown is Shanghai!
输入第二个字符串:God talked to you
输出:MYGOD
遇到‘ ’时将该地址赋值为‘\0’。
#include
#include
#include
char* string_headword(char *strp);
int main()
{
char str_1[40], str_2[40];
printf("Input string_1:\n");
gets(str_1);
printf("Input string_2:\n");
gets(str_2);
string_headword(str_1);
string_headword(str_2);
strcat(str_1,str_2);
puts(str_1);
return 0;
}
char* string_headword(char *strp)
{
char *p1, *p2;
p1 = strp;
p2 = strp;
while (*strp)
{
if (*p1 == ' ')
{
*p1 = '\0';
}
else if (*p2 >= 'a' && *p2 <='z')
{
*p2 = (*p2-32);
}
p2++;
}
return strp;
}
根据你主程序的逻辑,应该是分别处理输入的两个字符串,然后将两个字符串进行拼接。
string_headword(str_1);
string_headword(str_2);
返回值呢?不应该是str_1 = string_headword(str_1);类似这样的么?
C语言,我不怎么用,这里忘了是否能这样表达,因为你用的指针
还有,你string_headword函数中,我也没怎么理清你的逻辑。
按你最先的逻辑,不应该是只截取到第一个单词就停止了么?后面的就不管啦。
但你的程序里好像是编程将所有的空格替换成“\0”你最后整个的strp却又不是一个单词,那么最后在主程序里你拼接的话,怎么拼接?
ps:C语言,我不怎么用,很多都没搞清。不过最主要的问题,应该是你String_headword中的逻辑问题。