为了账号安全,请及时绑定邮箱和手机立即绑定

将id的前6个字符复制给s并输出,为什么得不到想要的东西?哪里的问题啊?

将id的前6个字符复制给s并输出,为什么得不到想要的东西?哪里的问题啊?

C++
ITMISS 2023-03-04 17:13:55
#include <iostream>#include <string.h>using namespace std;int main(){int num,i=0;cin>>num;for(i=0; i<num; i++){char id[18] ;cin>>id;char s[6]={};strncpy(s,id,6);cout<<id<<"\t"<<s<<endl;}return 0;}
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

因为strncpy不自动追加空字符到字符串结尾,所以s字符串没有结尾,需要做s[6] = 0;操作才行

查看完整回答
反对 回复 2023-03-08
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

如果你输入的字符串id的长度大于6个,strncpy到s时,会导致s不能正常的是\0结尾。

查看完整回答
反对 回复 2023-03-08
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

char s[6]={};
改为
char s[7]={0};
试试,原因是:如果你输入的id字符串长度等于或大于6个时,前6个字符都会被
复制到s中,而s只有6个字符的空间,导致s字符串最后的字符不是终止符结束,cout的输出结果就可能会出现乱码。所以你要把s字符串预留出一个字符来保存终止符'\0'。

查看完整回答
反对 回复 2023-03-08
  • 3 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信