Я нахожусь на (ubuntu точной) Linux-системе, и я хочу удалить ведущие символы (табуляторы) из строки в C. Я думал, что следующий код работал над моей предыдущей установкой (ubuntu oneric), но я нашел теперь, что он больше не работает (обратите внимание, что это упрощенная версия кода для общего UTF-8 символов):Удалить символы из строки в стандарте C
#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 I get
MY_LINE_ORIG= interface(quiet=true):
MY_LINE=interfae(quiet==true):
Обратите внимание на публикацию "=" и отсутствие "c"! Неправильно или как я могу достичь этого в качестве альтернативы. Код должен поддерживать строки UTF-8.
Кстати, вы делаете много копий без всякой причины, делая этот алгоритм чем-то вроде O (N!) Для вещи, которая может быть O (N) с разумным алгоритмом. –