#1 - 2017-7-27 03:58
_本間梨花 (逃げじゃ駄目だ!)
问题出在for循环足够次数后if语句无法寻找到字符串尾的'\0',可以的话希望能得知原因。。

#include <iostream>
#include <cstring>
using namespace std;
int main( )
{
        char a[20],b[20];
        cin>>a>>b;
        char *p=new char[strlen(a)+strlen(b)+3];
        p=a;
        for(int i=0;a[i-1]!='\0';i++)
                {
                        if(a='\0')
                        {
                                p=',';
                                p[i+1]=' ';
                                i+=2;
                                for(int j=0;b[j]!='\0';i++,j++)
                                {
                                        p=b[j];
                                }
                                p[i+1]='\0';
                                 cout<<p<<endl;
                                delete [] p;
                                return 0;
                        }
                }
}
#2 - 2017-7-27 03:59
(Make Bangumi Great Again!)
if ==
#3 - 2017-7-27 05:06
(就是没有)
if(a='\0')
#4 - 2017-7-27 05:45
这个程序的问题不是一般地多,说实话……不如谁来写个正确的你自己对比参考一下(
#4-1 - 2017-7-27 07:06
Genius🌟小乖💯
std::cout<<a<<", "<<b<<std::endl;
#4-2 - 2017-7-27 10:09
LunarShaddow🌙
我来写个 傻瓜版本,strcpy 版本和 sstream 版本干脆string得了吧……
#5 - 2017-7-27 07:04
(Enjoy your (real) life!)
print(', '.join([a,b]))
哦耶。
#6 - 2017-7-27 09:04
(已淡出bgm38)
p += a;
p += ', ';
p += b;
#6-1 - 2017-7-27 10:03
LunarShaddow🌙
C风格字符串不能这么玩啦
#7 - 2017-7-27 10:02
(Death is the gateway to Eternity, my dear.)
char *p=new char[strlen(a)+strlen(b)+3];
p=a;
那p死哪儿去了,啊喂,p的地址已经丢了呀

for(int i=0;a[i-1]!='\0'
这里 i-1 已经溢出了
#8 - 2017-7-27 10:18
(Death is the gateway to Eternity, my dear.)
正解1:暴力版
#include <iostream>
#include <cstring>

int main()
{
    char a[20], b[20];
    std::cin >> a >> b;
    char *p = new char[strlen(a) + strlen(b) + 3];
    char* pos = p;
    for (int i = 0; i < strlen(a); i++)
    {
        *pos = a[i];
        pos++;
    }
    *pos = ',';
    pos++;
    for (int i = 0; i < strlen(b); i++)
    {
        *pos = b[i];
        pos++;
    }
    *pos = 0;
    std::cout << p << std::endl;
    delete[] p;
    return 0;
}
#8-1 - 2017-7-27 10:23
upsuper
你这硬生生把一个O(n)的算法写成O(n²)了……
#8-2 - 2017-7-27 10:31
LunarShaddow🌙
upsuper 说: 你这硬生生把一个O(n)的算法写成O(n²)了……
有吗……撑死变成O(2n),我懒得记录位置了
#8-3 - 2017-7-27 10:32
LunarShaddow🌙
正解2:非暴力不合作版

#include <iostream>
#include <cstring>

int main()
{
    char a[20], b[20];
    std::cin >> a >> b;
    char *p = new char[std::strlen(a) + std::strlen(b) + 3];
    std::strcpy(p, a);
    p[strlen(a)] = ',';
    std::strcpy(p + std::strlen(a) + 1, b);
    std::cout << p << std::endl;
    delete[] p;
    return 0;
}
#8-4 - 2017-7-27 10:35
LunarShaddow🌙
正解3:正常人版

#include <iostream>
#include <string>

int main()
{
    std::string a, b;
    std::cin >> a >> b;
    std::string p = a + ',' + b;
    std::cout << p << std::endl;
    return 0;
}
#8-5 - 2017-7-27 10:48
我超!有bug!
LunarShaddow 说: 正解3:正常人版

#include <iostream>
#include <string>

int main()
{
&nbsp; &nbsp; std::string a, b;
&nbsp;...
层主好棒棒,学习惹
#8-6 - 2017-7-27 11:05
完全没有
LunarShaddow 说: 正解3:正常人版

#include <iostream>
#include <string>

int main()
{
&nbsp; &nbsp; std::string a, b;
&nbsp;...
正解4:鬼畜版
#include <iostream>    
#include <iterator>     
#include <string>
int main() {
        std::istream_iterator<std::string> it(std::cin);
        std::cout << (*(it++)+", "+*(it)) << std::endl;
        return 0;
}
#8-7 - 2017-7-27 11:10
LunarShaddow🌙
iu   没有 说: 正解4:鬼畜版
#include <iostream>&nbsp; &nbsp;
#include <iterator>&nbsp; &nbsp;&nbsp;&nbsp;
#include <str...
(bgm38)推荐参加下一届IOCCC大赛
#8-8 - 2017-7-27 11:19
完全没有
LunarShaddow 说: 推荐参加下一届IOCCC大赛
泛化解5:妖孽版
#include <iostream>    
#include <iterator>     
#include <string>
int main() {
        std::copy(std::istream_iterator<std::string>(std::cin), std::istream_iterator<std::string>(), std::ostream_iterator<std::string>(std::cout, ", "));
        return 0;
}
#8-9 - 2017-7-27 11:20
我超!有bug!
iu   没有 说: 泛化解5:妖孽版#include <iostream>&nbsp; &nbsp;
#include <iterator>&nbsp; &nbsp;&nbsp;&nbsp;
#include <str...
(bgm38)(bgm38)(bgm38)出格了
#8-10 - 2017-7-27 11:54
upsuper
LunarShaddow 说: 有吗……撑死变成O(2n),我懒得记录位置了
strlen也是一个n啊……你每次循环都重新计算一次strlen就n²了啊……当然编译器很可能可以将strlen这种的给优化掉就是了
#8-11 - 2017-7-27 12:51
halfelf
c-style string 正常人版

#include <stdio.h>

int main() {
    char a[20], b[20], p[40];
    scanf("%s", a);
    scanf("%s", b);
    snprintf(p, sizeof p, "%s,%s", a, b);
    printf("%s\n", p);
    return 0;
}
#8-12 - 2017-7-27 12:54
LunarShaddow🌙
halfelf 说: c-style string 正常人版

#include <stdio.h>

int main() {
&nbsp; &nbsp; char a[20], b[20], p[40];
&nbsp;...
(bgm38)对C学艺不精,忘了sprintf
#8-13 - 2017-7-27 13:22
LunarShaddow🌙
upsuper 说: strlen也是一个n啊……你每次循环都重新计算一次strlen就n²了啊……当然编译器很可能可以将strlen这种的给优化掉就是了

额……看来全靠优化了
#8-14 - 2017-7-28 11:57
lhb5883-吹冈王♛⑩
upsuper 说: 你这硬生生把一个O(n)的算法写成O(n²)了……
过早优化是万恶之源(bgm38)
#9 - 2017-7-27 10:38
(恋爱是少女的特权哟。)
其实,LZ想问的好像是这个 “问题出在for循环足够次数后if语句无法寻找到字符串尾的'\0',可以的话希望能得知原因。。”

=_=
#9-1 - 2017-7-27 10:52
LunarShaddow🌙
呜噜呜噜汪汪汪! 说: 改成这样可以吗

#include <iostream>
#include <cstring>

using namespace std;

int main( )
{
&nbsp; &nbsp; c...
首先,你不能用 p=a 语句,这样p就会指向a的第一个元素,你新建的p已经玩完了(因为没有任何指针指向它,已经丢了)
其次,a=='\0'……任何情况都不会为真,因为a是一个地址
最后,你用的什么编译器……感觉warning满天飞/根本编译不过啊
#9-2 - 2017-7-27 10:55
我超!有bug!
LunarShaddow 说: 首先,你不能用 p=a 语句,这样p就会指向a的第一个元素,你新建的p已经玩完了(因为没有任何指针指向它,已经丢了)
其次,a=='\0'……任何情况都不会为真,因为a是一个地址
最后,你用的什么编译...
用的GCC。我没成功复制 现在改好了
#9-3 - 2017-7-27 11:00
我超!有bug!
LunarShaddow 说: 首先,你不能用 p=a 语句,这样p就会指向a的第一个元素,你新建的p已经玩完了(因为没有任何指针指向它,已经丢了)
其次,a=='\0'……任何情况都不会为真,因为a是一个地址
最后,你用的什么编译...
哇 为什么我的 p[  i  ] = a[ i  ]  ;  发上来就变成 p=a
#9-4 - 2017-7-27 11:02
LunarShaddow🌙
呜噜呜噜汪汪汪! 说: 哇 为什么我的 p = a;&nbsp;&nbsp;发上来就变成 p=a
请使用[code][/code]包围,方便排版,避免修改
#9-5 - 2017-7-27 11:03
我超!有bug!

#include <iostream>
#include <cstring>
using namespace std;

int main( )
{
    char b[20];
    char a[20];
    cin>>a>>b;

    char *p=new char[strlen(a)+strlen(b)+3];
    for(int i=0;i<strlen(a)+1;i++)
    {
        p[   i   ] =  a[  i   ];
       // cout<<p<<endl;
        if(a[  i ]=='\0')
        {
            cout<<" wa boom "<<endl;
            p[   i  ]=',';
            i++;
            for(int j=0; b[  j  ]!='\0';i++,j++)
            {
                p[   i ]    =  b[   j  ] ;
            }
            p[i]='\0';
            cout<<p<<endl;
            delete [   ] p;
            return 0;
        }
    }
    return  0;
}
#9-6 - 2017-7-27 11:04
我超!有bug!
LunarShaddow 说: 请使用[code][/code]包围,方便排版,避免修改
原来如此 感谢
#9-7 - 2017-7-27 11:23
LunarShaddow🌙
呜噜呜噜汪汪汪! 说: 原来如此 感谢
这版本没问题
不过两段复制是承上启下的顺序关系,没必要强行嵌在一个if block里(而且根本不用if嘛)

顺带,
[i]
在bbscode是斜体的意思,
[i]斜的[/i]
斜的
#9-8 - 2017-7-27 11:37
我超!有bug!
LunarShaddow 说: 这版本没问题
不过两段复制是承上启下的顺序关系,没必要强行嵌在一个if block里(而且根本不用if嘛)

顺带,在bbscode是斜体的意思,
斜的斜的
感谢大佬qwq

我本身不太会C++,所以是照着LZ的原样改的23333
#9-9 - 2017-7-27 12:10
LunarShaddow🌙
呜噜呜噜汪汪汪! 说: 感谢大佬qwq

我本身不太会C++,所以是照着LZ的原样改的23333
咦,这位居然不是楼主
#9-10 - 2017-7-27 12:19
我超!有bug!
LunarShaddow 说: 咦,这位居然不是楼主
(bgm39)(bgm39)(bgm39) 哇受到了暴击
#10 - 2017-7-27 10:40
我觉得我并没资格在这里发言
#11 - 2017-7-27 10:51
我觉得这是要把bgm上所有程序猿都炸出来的节奏,让大家发现bgm其实的确是高规格高品质的交友育儿平台
#11-1 - 2017-7-27 13:00
星野恵瑠
Swift程序猿只能在这里围观各位C++大佬(bgm39)
#11-2 - 2017-7-27 20:33
Chirin
会写坠吼的语言——PHP的人完全看不懂你们在写什么东西 (bgm38)
#11-3 - 2017-7-27 20:37
事实是柿子 - ⭐️VIP3
程序猿也有一堆不敢说话的(比如我
#11-4 - 2017-7-28 20:08
月火
其实没写过C++的野生程序猿还是很多的(bgm38)
#11-5 - 2017-8-5 08:56
fantasy
Chirin 说: 会写坠吼的语言——PHP的人完全看不懂你们在写什么东西
我也完全不懂PHP到底写的是什么,一堆美元号烟花缭乱的。
#12 - 2017-7-27 10:52
(人型自走单线程大脑培养皿#5)
整个bgm只有我不会写代码
#12-1 - 2017-7-27 11:07
又见骷髅
还有我
#12-2 - 2017-7-27 11:27
kaahi
还有我
#12-3 - 2017-7-27 11:49
fantasy
还有我
#12-4 - 2017-8-5 08:16
矮木油希希
明人不装暗b(
#12-5 - 2017-8-5 08:19
塔塔塔
还有我
#13 - 2017-7-27 11:47
(Permission to be human)
(bgm38)这是要在两个字符串之间加逗号?
#14 - 2017-7-27 13:08
(BGMのTrinitas<=>婊冈妈<=>补冈妈<=>拜冈妈 三位一体 ...)
开断点跟一下呗
#14-1 - 2017-7-27 20:38
#15 - 2017-7-27 20:45
(DD雷达搜寻中...?)
你们是不是把可爱的lz吓跑了(bgm38)
#16 - 2017-7-28 11:43
这种自己调试一下应该就能找到吧。
你们自high了半天,把楼主都吓跑了(bgm38)
#17 - 2017-7-28 18:26
(どんまい、私〜☆)
(bgm38)流石bgm,只有我什么都不会
#18 - 2017-7-28 19:10
(逃げじゃ駄目だ!)
(bgm38)2天没上。先感谢各位,==是自己傻了,然后解释下这个是不考虑strcat情况下写的
#19 - 2017-7-28 19:22
(逃げじゃ駄目だ!)
(bgm38)可以把bgm当学习平台叻
#19-1 - 2017-7-28 19:30
Genius🌟小乖💯
Welcome! I'm sure people are somewhat friendly here.
#19-2 - 2017-7-28 19:41
_本間梨花
Genius、小乖 说: Welcome! I'm sure people are somewhat friendly here.
On the whole I've already encountered plenty of skilled programmers here.
#20 - 2017-10-23 09:33
(Don't feel. Think.)
送给LZ一句话,勤写注释……