第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

怎樣可以讓ch1也是12345呢?

怎樣可以讓ch1也是12345呢?

C++
泛舟湖上清波郎朗 2023-03-04 18:14:14
用strncpy時(shí)字符數(shù)組和字符指針有著怎樣的區(qū)別?#include <iostream>using std::cout;using std::endl;int main(){char ch1[5];char* ch2;char* ch3 = "12345678";strncpy(ch1,ch3,5);//ch1輸出結(jié)果:12345&^% (注:后面幾個(gè)是亂碼)strncpy(ch3,ch2,5);//ch3輸出結(jié)果:12345cout << ch1 <<endl; cout << ch3 <<endl; return 0;}能解釋一下strncpy的運(yùn)行結(jié)果么??int main(){char ch1[5],ch5[5];char ch2[11],ch6[11];char* ch3 = new char[6];char* ch7 = new char[6];char* ch4 = new char[11];char* ch8 = new char[11];char* ch9 = new char[6];char* ch = "12345678";//strcpy(ch1,ch); cout << 1 << ch1 << endl;//strcpy(ch2,ch); cout << 2 << ch2 << endl;//strcpy(ch3,ch); cout << 3 << ch3 << endl;//strcpy(ch4,ch); cout << 4 << ch4 << endl; //上面四行結(jié)果均是12345678strncpy(ch5,ch,5); cout << 5 << ch5 << endl; //512345后面亂碼strncpy(ch6,ch,5); cout << 6 << ch6 << endl; //612345后面亂碼strncpy(ch7,ch,5); cout << 7 << ch7 << endl; //712345后亂碼strncpy(ch7,ch,6); cout << 7 << ch7 << endl; //7123456后亂碼strncpy(ch8,ch,5); cout << 8 << ch8 << endl; //812345后面亂碼strncpy(ch9,ch,5); cout << 9 << ch9 << endl; //912345后面亂碼system("pause");return 0;}
查看完整描述

2 回答

?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

操作字串時(shí),不要忘了給最后的'\0'分配空間,不然輸出時(shí)就會(huì)帶著亂碼,正確的做法是:
char *ch2 = new char[6];
strncpy(ch2, ch3, 5);
ch2[5] = '\0';
cout << ch2 << endl;
不能少了這句
delete[] ch2;
之所以出現(xiàn)亂碼,是因?yàn)閳?zhí)行strncpy的過(guò)程中并沒(méi)有將字串結(jié)束符'\0'賦值給目標(biāo),目標(biāo)字串沒(méi)有結(jié)束符輸出時(shí)自然就不知道應(yīng)該什么時(shí)候停止輸出,除非遇到'\0'字符,因此你會(huì)看到亂碼,就這樣。

查看完整回答
反對(duì) 回復(fù) 2023-03-08
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

分析下strncpy的源代碼應(yīng)該就明白了 ,庫(kù)函數(shù)并沒(méi)有對(duì)dest檢查,有可能dest不是以'\0'結(jié)尾, 輸出的時(shí)候就會(huì)出錯(cuò)了 
char * __cdecl strncpy ( 
char * dest, 
const char * source, 
size_t count 


char *start = dest; 

while (count && (*dest++ = *source++)) /* copy string */ 
count--; 

if (count) /* pad out with zeroes */ 
while (--count) 
*dest++ = '\0'; 

return(start); 
}

 


查看完整回答
反對(duì) 回復(fù) 2023-03-08
  • 2 回答
  • 0 關(guān)注
  • 95 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)