[問題] 字串處理完多出詭異的亂碼

看板C_and_CPP (C/C++)作者 (張咩咩)時間13年前 (2013/05/29 15:57), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) SUSE Linux Enterprise Server 10 gcc version 4.1.0 (SUSE Linux) 各位前輩,小弟在處理字串空白遇到一個詭異的亂碼問題。當宣告兩個字元陣列, 若第二個字元陣列的size小於1000,結果就會跑出亂碼。程式碼如下: #include <stdio.h> #include <stdlib.h> #include <string.h> void trimSpace(char *str){ int i,j=0; char tmpstr[200]; for(i=0; i<strlen(str)-1; i++){ if( str[i]!=' ' ){ tmpstr[j++]=str[i]; } } strcpy(str,tmpstr); } int main(){ char a[200]; char b[100]; //這個字元陣列宣告若改為1000以上,則無問題。 while(fgets(a,200,stdin)){ trimSpace(a); puts(a); } return 0; } 測試資料(文字檔)如下: hello:yoe ooooo bcd efg:ss 不知小弟的程式是否哪有問題呢?或是就只是因為編譯器問題?先謝謝各位。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.231.226

05/29 16:30, , 1F
tmpstr[j] = 0; strcpy(str,tmpstr);
05/29 16:30, 1F

05/29 16:54, , 2F
太感謝前輩了,原來是忽略了每個字的結束字元。感激不盡
05/29 16:54, 2F
文章代碼(AID): #1HfRJgLG (C_and_CPP)
文章代碼(AID): #1HfRJgLG (C_and_CPP)