Tôi đang sử dụng hệ thống linux (ubuntu chính xác) và tôi muốn xóa ký tự hàng đầu (tabulators) khỏi chuỗi trong C. Tôi cho rằng mã sau đã hoạt động trên cài đặt trước của tôi (ubuntu oneric)) nhưng tôi thấy bây giờ mà nó không hoạt động nữa (lưu ý rằng đây là một phiên bản đơn giản của một mã cho chung UTF-8 ký tự):Xóa ký tự khỏi chuỗi trong tiêu chuẩn 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;
}
tôi
gcc -o removetab removetab.c
Khi thực hiện removetab tôi nhận được
MY_LINE_ORIG= interface(quiet=true):
MY_LINE=interfae(quiet==true):
Lưu ý việc xuất bản "=" và thiếu "c"! Có gì sai hoặc làm cách nào tôi có thể đạt được điều này một cách khác. Mã nên hỗ trợ chuỗi UTF-8.
Ngẫu nhiên, bạn đang thực hiện rất nhiều bản sao không có lý do, làm cho thuật toán này giống như O (N!) Cho một thứ có thể là O (N) với thuật toán hợp lý. –