私は (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 文字列をサポートする必要があります。