文字列の操作
こんにちは。
以下のような、文字列があるとします。
NUMBER1(ヌル\0)からNUMBER1000(ヌル\0)までの文字列があるとします。
NUMBERは付属で、ほしい文字列が1から1000までNUMBERの次にある場合、1から1000までを取得する方法として、
Buf[100]
int x=0;
while(Buf[x]!='\0') //ナル文字までの長さを取得
x++;
memmove(&Buf[0],Buf[x-1],4); //NUMBER1の場合、長さは7。しかしほしい文字列は第6要素なのでx-1。
しかし・・・これを行うと、
NUMBER10:長さ8
NUMBER100:長さ9
・
・
となり、二桁以上の場合は、memmove(&Buf[0],Buf[x-2],4)と、
第2引数を手動で可変しなければなりません。
そこで、NUMBER\01\0 NUMBER\01000\0というように、
NUMBERの次にヌル文字(あってますでしょうか?)\0を挿入し、次の要素に1から1000まで文字列を挿入。そして文字列終端が分かるように再度\0を挿入します。
しかしこのような場合、ヌルを2つ挿入することで、上記に示したプログラムでは、手前の\0までしか長さを取得しないので、うまくいきません。
そこで、文字列の区切りを示すための方法として、なにかありますでしょうか?
文字列は最後に、\0を挿入することで判別すると書いてありますが、
NUMBERVISUALC++\0というような文字列を配列に格納してある場合、
NUMBERとVISUALC++をどのように分けて取得するのでしょうか?
それとも、第6要素から取得した文字列があると言う事が分かっている場合、第6要素からを指定するプログラムを作るということになるのでしょうか?
よろしくお願いします。
お礼
返事遅れて申し訳ありませんでした。himajin100000さんが作成してくれたコードを 解読するのに時間がかかってしまいました。ですが、おかげさまで課題が解決しました! 本当にありがとうございました!!