| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 966 人关注过本帖
标题:为何以下代码结果为乱码
只看楼主 加入收藏
a779521025
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-7-12
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
为何以下代码结果为乱码
#include <stdio.h>
char *mystrncpy(char *p1, char *p2, int n);
int main(void)
{
char str1[81];
char str2[81];
int n;
do
{
puts("input string1:");
gets(str1);
puts("input string2:");
gets(str2);
puts("input the number of copying char:");
scanf("%d",&n);
getchar();
puts("After copying:");
puts(mystrncpy(str1, str2, n));
puts("input any char except q to go on.");
gets(str1);
}
while(*str1 != 'q');
puts("Quit.");
return 0;
}
char *mystrncpy(char *p1, char *p2, int n)
{
char *p=p1;
while(*p1++ != '\0') continue;
*--p1 = *p2;
n--;
while(n>0 && *p2 != '\0')
{
*++p1 = *++p2;
n--;
}
return p;
}
搜索更多相关主题的帖子: 乱码 char int puts input 
2018-07-14 15:18
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
收藏
得分:0 
因为新拼接的字符没有加结束符。在末尾修改为:

while(n>0 && *p2 != '\0')
{
*++p1 = *++p2;
n--;
}
*++p1='\0';
return p;
}

添加上一个结束符就可以
2018-07-14 19:57
快速回复:为何以下代码结果为乱码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016606 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved