我試圖寫一個快速的函數刪除刪除特定字符下劃線試圖從一個字符串
char yytext[25] = {"IDEN_T3FY_ER"};
char removeUnderscore[9];
int i, j = 0;
printf("Before: %s\n", yytext);
for (i = 0; i < strlen(yytext); i++){
if (j == 8)
break;
if (yytext[i] != '_')
removeUnderscore[j++] = yytext[i];
}
removeUnderscore[++j] = '\0';
printf("\nAfter: %s", removeUnderscore);
但是打印時,它會得到前8個字符正確,並附加垃圾「8時'的值,而不是換行符。
任何人都可以解釋爲什麼嗎?或者也許提供一個更簡單的方法來這樣做?
爲什麼你有8和9硬編碼到你的代碼而不是'#define BUFSIZE 8'和'char removeUnderscore [BUFSIZE + 1];'?另外,爲什麼你使用'char yytext [25] = {「string」};'?大括號是不必要的,除非您在代碼中的其他地方有理由,否則25也是不必要的(如果您的字符串變爲超過25個字符,則可能有害)。 –