我在一个(ubuntu 精确的)linux 系统上,我想从 C 中的字符串中删除前导字符(制表符)。我认为下面的代码在我以前的安装(ubuntu oneric)上工作,但我现在发现它不起作用不再(请注意,这是通用 UTF-8 字符代码的简化版本):
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
int nbytes = 10000;
char *my_line, *my_char;
my_line = (char *)malloc((nbytes + 1)*sizeof(char));
strcpy(my_line,"\tinterface(quiet=true):");
printf("MY_LINE_ORIG=%s\n",my_line);
while((my_char=strchr(my_line,9))!=NULL){
strcpy(my_char, my_char+1);
}
printf("MY_LINE=%s\n",my_line);
return 0;
}
我愿意
gcc -o removetab removetab.c
执行 removetab 时,我得到
MY_LINE_ORIG= interface(quiet=true):
MY_LINE=interfae(quiet==true):
注意“=”的重复和缺少的“c”!出了什么问题,或者我该如何实现这一目标。代码应支持 UTF-8 字符串。