qq_18832365 2016-12-21 08:08 采纳率: 0%
浏览 992

C语言字符串编程,其指教我的程序为什么出错,以及编程思路对不对?

程序功能为输入两个英文字符串,取每个字符串的第一个单词组成一个新的字符串,全部大写输出。

程序的正确运行示例:
输入第一个字符串: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;

}

  • 写回答

1条回答 默认 最新

  • Book1346 2016-12-21 08:15
    关注

    根据你主程序的逻辑,应该是分别处理输入的两个字符串,然后将两个字符串进行拼接。
    string_headword(str_1);
    string_headword(str_2);
    返回值呢?不应该是str_1 = string_headword(str_1);类似这样的么?
    C语言,我不怎么用,这里忘了是否能这样表达,因为你用的指针
    还有,你string_headword函数中,我也没怎么理清你的逻辑。
    按你最先的逻辑,不应该是只截取到第一个单词就停止了么?后面的就不管啦。
    但你的程序里好像是编程将所有的空格替换成“\0”你最后整个的strp却又不是一个单词,那么最后在主程序里你拼接的话,怎么拼接?

    ps:C语言,我不怎么用,很多都没搞清。不过最主要的问题,应该是你String_headword中的逻辑问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?