アプリ版:「スタンプのみでお礼する」機能のリリースについて

文字列の一部を抽出したいときのプログラムです。
絶対条件は
・文字列はchar*型
・ある文字で区切られた区間を抽出
です。

以下のコードだとstrncpyの部分でsegmantation faultになってしまいます。
--------------------------
char array[10] = "abcd/efgh";
char* str0
char* str1;
char* str2;
int = len;

str0 = array;
len = strstr(str0, "/") - str0;

strncpy(str1, str0, len);
str2 = array + len + 1;
--------------------------

各変数が
str1 = abcd
str2 = fghi
となるようにしたいです。

char str1[10];などにすればいいのですが、それ以外の方法でお願いします。

A 回答 (6件)

>str2 = strtok(null, "/");



str2 = strtok((char*)0, "/");
かもしれません。

>後からarray[]の内容を変更した場合のstr1およびstr2は機体と別の動作しますけど。

後からarray[]の内容を変更した場合のstr1およびstr2は期待と別の動作しますけど。
です。
str1 = strtok(array, "/");
str2 = strtok((char*)0, "/");
strcpy(array, "012345678");
とかやった場合とか。
    • good
    • 0

No.5さん


> 元の配列には 'i' がありません。

うぉう、そっちには気が使なった。
ってことは、「str2は各文字をインクリメントすべし」と仕様を推測しなきゃいけなかったのか。
    • good
    • 0

>str2 = fghi



元の配列には 'i' がありません。どこかから持ってくるということでしょうか。
    • good
    • 0

>各変数が


>str1 = abcd
>str2 = fghi
>となるようにしたいです。

嗚呼っ!!
'/'だけでなく'e'もカットでしたか……
となるとstrtok()だと分断が問題ですかね……。
# No.2さんの…ポインタを+2しているところで気付いたっす。
    • good
    • 0
    • good
    • 0

>以下のコードだとstrncpyの部分でsegmantation faultになってしまいます。



そりゃ、str1はどこを指しているか判らない不正なポインタですからねぇ…。

>各変数が
>str1 = abcd
>str2 = fghi
>となるようにしたいです。

array[]の内容は元々の状態から変わっても問題ない…んでしょうか?
str1 = strtok(array, "/");
str2 = strtok(null, "/");
とか…。
array[]の内容書き換わりますし、
後からarray[]の内容を変更した場合のstr1およびstr2は機体と別の動作しますけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A