新手小白求助一个问题

Goatherd0072 2020-06-09 09:59:04
题目的要求是 Insert函数将一个字符串插入另一个字符串中指定位置,插入的部分用{}括起,但是我程序里明明是‘}’,但还是输出这个乱码字,换了ASC码也不行。

新人求助!!!
下面是我的代码,如果有问题的地方希望大佬能指出。
#include <iostream>
using namespace std;

int Insert(char* dest, char* src, int pos);

char* S1, * S2;

int main(int argc, char* argv[])
{
char s1[80], s2[80];
int n, len;

S1 =s1 ;
S2 =s2 ;

cout << "dest:";
cin >> s1;
cout << "src:";
cin >> s2;
cout << "pos:";
cin >> n;

len = Insert(S1, S2, n); //在下面完成程序编写:调用Insert函数。


cout << "output:" << s1 << ":" << len << endl;
return 0;
}

int Insert(char* dest, char* src, int pos)
{
int i, j;
char temp[80];

temp[0] ='}';
for (i = pos, j = 1; i <= strlen(dest); i++, j++)
temp[j] = dest[i];
dest[pos] = 123;
for (i = 0, j = pos + 1; i <= strlen(src) - 1; i++, j++)
dest[j] = src[i];
dest[j + 1] = '\0';

strcat(dest, temp);

S1 = dest;

return strlen(dest) ;
}

...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Goatherd0072 2020-06-09
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
dest[j + 1] = ‘\0’; 改成 dest[j] = ‘\0’; //注意for j 循环结束后 j 的位置在哪里,所以dest[j] = ‘\0’;是正确的,dest[j + 1]就会造成dest[j]是个垃圾字符,所以就会乱码
谢谢你!大佬,这么简单的问题都没看出来,看来还要多学。
qybao 2020-06-09
  • 打赏
  • 举报
回复
dest[j + 1] = ‘\0’; 改成 dest[j] = ‘\0’; //注意for j 循环结束后 j 的位置在哪里,所以dest[j] = ‘\0’;是正确的,dest[j + 1]就会造成dest[j]是个垃圾字符,所以就会乱码

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧