【发布时间】:2018-07-15 20:14:58
【问题描述】:
在处理字符串时我通常不使用指针字符,但我通常认为它们更好,因为我可以打印整个字符串而无需迭代每个字符。
无论如何,因为我不使用它们,所以我真的不知道这两者是如何相互作用的。运行以下代码时程序崩溃,所以我不知道该怎么办,因为没有错误。
int main(){
char s[]="abcde";
char *p;
for(unsigned int i=0;i<strlen(s);i++)
strcat(p,s+i);
cout<<*p;
}
我尝试将两个字符串都表示为指针,但它没有改变任何东西。只有当我尝试打印第二个数组时它才会崩溃。我尝试了 *p++=*s 或我在谷歌上找到的类似内容,但它仍然崩溃,我做错了什么?
【问题讨论】:
-
strcat的第一个参数必须是指向char数组的指针,该数组大到足以容纳结果字符串(并且它本身必须是一个以空字符结尾的字符串)。因为这里不是这种情况(你有一个未初始化的指针p)你正在调用 undefined behavior -
@UnholySheep 我认为这是一个答案,而不是评论:)
-
那我该怎么做呢?我尝试将 *p char 初始化为 '/0',但也没有用。
-
老实说,我仍然有些困惑
for循环应该实现什么 - 如果它可以工作,它将导致像"abcdebcdecdedee"这样的字符串 - 这真的是你想要的吗?跨度> -
真的不清楚你想做什么。我的意思是代码崩溃的原因很明显,但除非你说你想让代码做什么,否则谁能修复它?