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中的逻辑问题。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?