- ベストアンサー
文字列の一部を抽出するプログラム
- char*型の文字列から指定した区間を抽出するプログラムを作成します。
- セグメンテーションフォールトを解消する方法を説明します。
- 要求通りに変数str1とstr2を初期化する方法を示します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>str2 = strtok(null, "/"); str2 = strtok((char*)0, "/"); かもしれません。 >後からarray[]の内容を変更した場合のstr1およびstr2は機体と別の動作しますけど。 後からarray[]の内容を変更した場合のstr1およびstr2は期待と別の動作しますけど。 です。 str1 = strtok(array, "/"); str2 = strtok((char*)0, "/"); strcpy(array, "012345678"); とかやった場合とか。
その他の回答 (5)
- osamuy
- ベストアンサー率42% (1231/2878)
No.5さん > 元の配列には 'i' がありません。 うぉう、そっちには気が使なった。 ってことは、「str2は各文字をインクリメントすべし」と仕様を推測しなきゃいけなかったのか。
- asuncion
- ベストアンサー率33% (2127/6290)
>str2 = fghi 元の配列には 'i' がありません。どこかから持ってくるということでしょうか。
- Wr5
- ベストアンサー率53% (2173/4061)
>各変数が >str1 = abcd >str2 = fghi >となるようにしたいです。 嗚呼っ!! '/'だけでなく'e'もカットでしたか…… となるとstrtok()だと分断が問題ですかね……。 # No.2さんの…ポインタを+2しているところで気付いたっす。
- osamuy
- ベストアンサー率42% (1231/2878)
- Wr5
- ベストアンサー率53% (2173/4061)
>以下のコードだとstrncpyの部分でsegmantation faultになってしまいます。 そりゃ、str1はどこを指しているか判らない不正なポインタですからねぇ…。 >各変数が >str1 = abcd >str2 = fghi >となるようにしたいです。 array[]の内容は元々の状態から変わっても問題ない…んでしょうか? str1 = strtok(array, "/"); str2 = strtok(null, "/"); とか…。 array[]の内容書き換わりますし、 後からarray[]の内容を変更した場合のstr1およびstr2は機体と別の動作しますけど。