-3

char *の末尾からcharを削除するにはどうすればよいですか?私は「123456ABC」を持っていて、「123456」が欲しいです。ありがとう!

4

3 に答える 3

6

要素の 1 つを null 文字に設定できます。文字列 "123456ABC" を "123456" に切り詰めたいとします。

str[6] = '\0';

しかし、残りの文字列にはまだメモリが割り当てられています。おそらくやりたいことは、新しい文字列を作成し、古い文字列の必要な部分をそれにコピーしてから、古い文字列を削除することです。

于 2012-10-09T01:16:09.763 に答える
1

char * string は '\0' で終了します。

char c[] = "123456ABC";
c[6] = '\0';
于 2012-10-09T01:16:28.013 に答える
1

必要な残りの文字列の長さ length がある場合は、str [ length]='\0'を設定して、次のようにします。

// Assuming str was obtained through malloc/realloc functions.
str = realloc(str, sizeof(char)*(1+length));

このようにして、最適化したい場合に備えて、概念的な文字列とそれが使用するメモリを短縮します!

編集: 私の最初の提案で問題を提起してくれた Jim Balter に感謝します!

于 2012-10-09T01:30:48.467 に答える