亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將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 關注
  • 161 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號