我试图写一个快速的函数删除删除特定字符下划线试图从一个字符串
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个字符,则可能有害)。 –