文字列の一部を抽出したいときのプログラムです。
絶対条件は
・文字列は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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
C言語での文字列より値を抜き出す
C言語・C++・C#
-
C言語で特定列だけを抽出して配列に格納し、出力したいです。 読み込みファイル(read.txt) 0
C言語・C++・C#
-
文字列の切り出し
C言語・C++・C#
-
-
4
char*を初期化したいのですが
C言語・C++・C#
-
5
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
6
C言語 配列の長さの上限
C言語・C++・C#
-
7
C++で入力した文字列から数字を取り除くもしくは数字のみをのこす
C言語・C++・C#
-
8
正負を反転させて出力するプログラム
C言語・C++・C#
-
9
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
10
文字列中からある文字列とある文字列の間にある文字列を取得
C言語・C++・C#
-
11
fopne で失敗する原因
C言語・C++・C#
-
12
ハンドルされていない例外が発生しました
C言語・C++・C#
-
13
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
14
C言語のポインターに関する警告
C言語・C++・C#
-
15
#defineの定数を文字列として読み込む
C言語・C++・C#
-
16
fopenでのパス指定
C言語・C++・C#
-
17
C言語で分からないところがあります。整数値の分割取得みたいなこと・・
C言語・C++・C#
-
18
「コマンドライン引数チェック」て何
C言語・C++・C#
-
19
sscanfとscanfの違いがよくわからないのですが、簡単に優しく教えて下さい。 お願い致します。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
C言語のプログラムについてです
-
C言語にて構造体のメンバがNULL...
-
fstream型オブジェクトを関数の...
-
文字列str内の全ての数字を...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
CStringからchar*への型変換に...
-
char 文字列型 の表現範囲が-12...
-
char型にint型の数値を代入する。
-
文字列の途中から途中までを抽出
-
DWORDとcharの変換
-
c言語でポインタ変数を用いた配...
-
'\\0'とはなんですか?
-
fgetc( )の戻り値はなぜ整数??
-
ポインタのポインタの使い方
-
callocについて
-
文字型配列に格納した空白の切捨て
-
wsprintf( ポインタ , "%d" , "...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
const char* s1とただのchar s1...
-
DWORDとcharの変換
-
strcat関数を自作したいです
-
C++17で、unsigned char * 配列...
-
文字列内の数字削除
-
エクセルのMID関数は、C言語では?
-
char 文字列型 の表現範囲が-12...
-
char型にint型の数値を代入する。
-
C言語を用いた環境変数の作成/...
-
動的メモリの初期化方法について。
-
fstream型オブジェクトを関数の...
-
C言語のプログラムについてです
-
文字列の途中から途中までを抽出
-
C言語:小文字を大文字に変換す...
おすすめ情報