我正在运行一个(ubuntu precise)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;
}
I do
gcc -o removetab removetab.c
执行removetab时,我收到以下信息:
MY_LINE_ORIG= interface(quiet=true):
MY_LINE=interfae(quiet==true):
请注意“=”的重复和“c”的缺失!出了什么问题或我该如何实现替代方案。该代码应支持UTF-8字符串。