VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 341|回复: 4

[已解决]萌新求助QAQ

[复制链接]
32_avatar_middle
最佳答案
0 
在线会员 发表于 2020-7-29 22:34:02 | 显示全部楼层 |阅读模式
#include<iostream>
#include"function.h"
using namespace std;
int main()
{
        char st0[100] = { 0 };
        char st1[100] = { 0 };
        char c = '0';
        int i = 0;
        c = getchar();
        while (c != '\n')
        {
                st0[i] = c;
                c = getchar();
                ++i;
        }
        i = 0;
        c = getchar();
        while (c != '\n')
        {
                st1[i] = c;
                c = getchar();
                ++i;
        }
        cout << "输入完成" << endl;
        f_strcat(st0, st1);
        string cbnt;
        cbnt = st0;
        cout << cbnt << endl;



        /*char st0[100] = {0};
        char st1[100] = {0};
        char c='0';
        c = getchar();
        for (int i = 0; c != '\n'; ++i)
        {
                st0[i] = c;
                c = getchar();
        }
        c = getchar();
        for (int i = 0; c != '\n '; i++)
        {
                st1[i] = c;
                c = getchar();
        }
        cout << "输入完成" << endl;
        f_strcat(st0, st1);
        string cbnt;
        cbnt = st0;
        cout << cbnt << endl;*/
        return 0;

}
为啥被注释掉的那段代码编译运行后会一直卡在for循环里面出不来,while循环的那段运行得很好
function里面是
void f_strcat(char* orgn, char* lt)
{
        int i = 0;
        for (; *(orgn + i) != '\0'; ++i);
        for (int idx=0; *(lt+idx)!='\0'; ++idx)
        {
                *(orgn + i) = *(lt + idx);
                ++i;
        }
}
用来模拟strcat
最佳答案
74_avatar_small
2020-7-30 00:04:38
逻辑很正确,只是第二个for的'\n'里多打了个空格,值就变了。现行C语言标准里单引号是可以包含多个字符的




上一篇:求助
下一篇:求助
74_avatar_middle
最佳答案
1 
在线会员 发表于 2020-7-30 00:04:38 来自手机 | 显示全部楼层    本楼为最佳答案   
bestAnswer
逻辑很正确,只是第二个for的'\n'里多打了个空格,值就变了。现行C语言标准里单引号是可以包含多个字符的
23_avatar_middle
最佳答案
5 
在线会员 发表于 2020-7-30 00:13:42 | 显示全部楼层
for (; *(orgn + i) != '\0'; ++i);  目测这里多了个分号
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-7-30 03:19:31 | 显示全部楼层
しのなおRay 发表于 2020-7-30 00:04
逻辑很正确,只是第二个for的'\n'里多打了个空格,值就变了。现行C语言标准里单引号是可以包含多个字符的

谢谢指点,没想到是这种地方出问题了...
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-7-30 03:22:18 | 显示全部楼层
明月出天山 发表于 2020-7-30 00:13
for (; *(orgn + i) != '\0'; ++i);  目测这里多了个分号

在for后面加";"是可以的哦,我记得以前看的一本书上还专门提醒没有{}的for后面要加;表示语句结束
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-6-2 03:07

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表