質問: 0; strcpy(sendvalue,sendmsg); printf("send\n"); for(i=0;i
回答: その「抽出したい」というのがどんな条件で、どんな風にやりたいのかがはっきりしないのですが。 単純には while(i=0;抽出元が区切り文字?になるまで,または抽出する文字数まで; ++ i){ 抽出結果[i]=抽出元[i+抽出開始の添字] ; } 抽出結果[抽出した最後+1]='\0' ; となるでしょう。場合によってはstrtokとかsscanfとかも有用でしょう。 あと、細かいようですが。 > if(ret!=0xffffffff) このreadがシステムコールのものなら、今あなたが使っている環境では正しく動作するかもしれませんが、常に正しいとは限りません。 標準のcなら、マニュアルには「戻り値は読み込んだ文字数/失敗したら負の値」って書いてないですか? 環境によっては(例えば、intが64bitのcだったら) 0xfffffffff は「正」なので「失敗とは限らない」し、失敗で返ってくるのも必ず-1とは限らないです。 > printf("readvalue(%s):",ret); retはint型です。%sはcharへのポインタを要求します。 cではprintfの中の型の不一致はエラーにはなりません。しかし、結果として致命的なエラーになるケースはあります。 この場合だと、retに入っている「文字数」を、「文字列が始まるアドレス」と解釈されてしまい、不正はエリアにアクセスしてしまうかもしれません。