[問題] C++複製字串..strcpy,strcat 找不到bug

看板C_and_CPP作者 (JoshNash)時間15年前 (2010/04/15 20:45), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
各位好, 在寫new user這部分的時候, 我想把帳號密碼寫入 username_info.txt裡面 用了strcpy strcat把帳號改成結尾加_info.txt 從頭到尾沒動到存放密碼的字串cmd3 印出來後卻變成"txt" 或是"xt".... 帳號密碼都打大約十個多一點時才會這樣, 都打短短的就不會發生問題 debug de很久了一直找不到 ~"~ 麻煩大神們花一點時間幫幫小弟我 <(_ _)> 謝謝! #include <cstdio> #include <iostream> #include <string.h> using namespace std; int main(void) { char cmd1[4]; char cmd2[30]; char cmd3[30]; cin >> cmd1; if(strcmp(cmd1,"/u")==0) //bug:cmd3 sometimes cannot be stored properly... { cin >> cmd2 ;cin >> cmd3; cout<<endl<<cmd2<<endl<<cmd3<<endl; char tmp_fn[15]; char *fend="_info.txt"; strcpy(tmp_fn,cmd2);//cout<<tmp_fn<<endl; strcat(tmp_fn,fend); cout<<"fend="<<fend<<endl; cout<<"tmp_fn="<<tmp_fn<<endl; cout<<"cmd2="<<cmd2<<endl; cout<<"cmd3="<<cmd3<<endl; } } 這是執行結果(example): /u joajoajoas hanehaned joajoajoas hanehaned fend=_info.txt tmp_fn=joajoajoas_info.txt cmd2=joajoajoas cmd3=txt -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.64.167

04/15 20:48, , 1F
囧 是第四誡嗎
04/15 20:48, 1F

04/15 20:48, , 2F
tmp_fn 不夠大
04/15 20:48, 2F

04/15 20:53, , 3F
感謝樓上!!! 不過好奇為什麼會影響到cmd3 ??
04/15 20:53, 3F

04/15 20:54, , 4F
正好你的 compiler 把 cmd3 放在 tmp_fn 後面而已
04/15 20:54, 4F

04/15 20:54, , 5F
了解, 謝謝你!!
04/15 20:54, 5F
文章代碼(AID): #1BnmfJpC (C_and_CPP)