![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
文字列の一部を抽出したいときのプログラムです。
絶対条件は
・文字列は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];などにすればいいのですが、それ以外の方法でお願いします。
No.3ベストアンサー
- 回答日時:
>str2 = strtok(null, "/");
str2 = strtok((char*)0, "/");
かもしれません。
>後からarray[]の内容を変更した場合のstr1およびstr2は機体と別の動作しますけど。
後からarray[]の内容を変更した場合のstr1およびstr2は期待と別の動作しますけど。
です。
str1 = strtok(array, "/");
str2 = strtok((char*)0, "/");
strcpy(array, "012345678");
とかやった場合とか。
No.6
- 回答日時:
No.5さん
> 元の配列には 'i' がありません。
うぉう、そっちには気が使なった。
ってことは、「str2は各文字をインクリメントすべし」と仕様を推測しなきゃいけなかったのか。
No.4
- 回答日時:
>各変数が
>str1 = abcd
>str2 = fghi
>となるようにしたいです。
嗚呼っ!!
'/'だけでなく'e'もカットでしたか……
となるとstrtok()だと分断が問題ですかね……。
# No.2さんの…ポインタを+2しているところで気付いたっす。
No.1
- 回答日時:
>以下のコードだとstrncpyの部分でsegmantation faultになってしまいます。
そりゃ、str1はどこを指しているか判らない不正なポインタですからねぇ…。
>各変数が
>str1 = abcd
>str2 = fghi
>となるようにしたいです。
array[]の内容は元々の状態から変わっても問題ない…んでしょうか?
str1 = strtok(array, "/");
str2 = strtok(null, "/");
とか…。
array[]の内容書き換わりますし、
後からarray[]の内容を変更した場合のstr1およびstr2は機体と別の動作しますけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語 少しの疑問 4 2022/11/08 02:48
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
C言語での文字列より値を抜き出す
C言語・C++・C#
-
文字列の切り出し
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
-
4
C言語で特定列だけを抽出して配列に格納し、出力したいです。 読み込みファイル(read.txt) 0
C言語・C++・C#
-
5
char*を初期化したいのですが
C言語・C++・C#
-
6
正負を反転させて出力するプログラム
C言語・C++・C#
-
7
文字列中からある文字列とある文字列の間にある文字列を取得
C言語・C++・C#
-
8
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
9
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
10
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
11
C 開放してるのにエラー(double free or corruption (!prev))がでる
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
new charとnew char[N]の違いは?
-
CStringからchar*への型変換に...
-
c言語でcsvファイルの処理で、...
-
C言語の文字リテラル中の16進文...
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char型にint型の数値を代入する。
-
小数点入りの文字列をfloat型に...
-
WritePrivateProfileString
-
文字列の連結
-
const char* s1とただのchar s1...
-
C言語 strstrの実装
-
簡易版smtpクライアント(メール...
-
エクセルのMID関数は、C言語では?
-
C言語のchar型配列を計算させる...
-
警告
-
C++17で、unsigned char * 配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
CStringからchar*への型変換に...
-
strcat関数を自作したいです
-
new charとnew char[N]の違いは?
-
csvファイルをfscanfで読み込む...
-
char型にint型の数値を代入する。
-
動的メモリの初期化方法について。
-
C言語で文字列をかえす正しい書...
-
文字列str内の全ての数字を...
-
char 文字列型 の表現範囲が-12...
-
DWORDとcharの変換
-
fstream型オブジェクトを関数の...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
const char* s1とただのchar s1...
-
文字列内の数字削除
-
c言語でポインタ変数を用いた配...
-
szとlpszの違い
おすすめ情報