c语言puts()输出数组出现乱码,

我想要把一个数组的内容复制到另一个数组里,最后puts(ar1)就出现乱码了#include<stdio.h>#include<ctype.h>voidCOPY(char... 我想要把一个数组的内容复制到另一个数组里,
最后puts(ar1)就出现乱码了

#include <stdio.h>
#include <ctype.h>
void COPY(char *, char *, int);
int main()
{
char ar1[100];
char ar2[100];
int n;
puts("Please enter a message to ar2");
gets(ar2);
puts("How many characters you need to copy?");
scanf_s("%d",&n);
COPY(ar1, ar2, n);
puts("Now let's see what would happen when we puts(ar1)");
puts("Puts(ar1)");
puts(ar1);
return 0;
}
void COPY(char *ar1, char *ar2, int n)
{
int i;
for (i = 0; i < n; i++)
*(ar1 + i) = *(ar2 + i);

}
展开
 我来答
447587096
推荐于2016-09-10 · TA获得超过5046个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1163万
展开全部

//因为没有结束标识'\0'

#include <stdio.h>

#include <ctype.h>

void COPY(char *, char *, int);

int main()

{

char ar1[100];

char ar2[100];

int n;

puts("Please enter a message to ar2");

gets(ar2);

puts("How many characters you need to copy?");

scanf("%d",&n);

COPY(ar1, ar2, n);

puts("Now let's see what would happen when we puts(ar1)");

puts("Puts(ar1)");

puts(ar1);

return 0;

}

void COPY(char *ar1, char *ar2, int n)

{

int i;

for (i = 0; i < n; i++)

*(ar1 + i) = *(ar2 + i);

*(ar1+i) = '\0';//加一句 就对了,你的字符串没有结束标识


}

百度网友51b18e237
2015-11-29
知道答主
回答量:21
采纳率:0%
帮助的人:17.5万
展开全部
因为输出字符串是以'\0'结尾的,复制完后最后一位要写上'\0'。
void COPY(char *ar1, char *ar2, int n)
{
int i;
for (i = 0; i < n; i++)
*(ar1 + i) = *(ar2 + i);
ar[i]='\0';

}
就行了
追问
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式