文字列の一部を抽出したいときのプログラムです。
絶対条件は
・文字列は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ランキング
-
CStringからchar*への型変換に...
-
char*を初期化したいのですが
-
strcat関数を自作したいです
-
char 文字列型 の表現範囲が-12...
-
カンマで区切った文字の抽出に...
-
csvファイルをfscanfで読み込む...
-
strcpy関数で文字型変数へのポ...
-
文字列の演算
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
char AA[]{"全角文字"};から"全...
-
C言語(C89)での文字列代入
-
C言語を用いた環境変数の作成/...
-
C言語で文字列をかえす正しい書...
-
C言語のプログラムについてです
-
fread()関数とfwrite()関数につ...
-
fgetc( )の戻り値はなぜ整数??
-
void型へのポインタ
-
csvファイルを構造体に格納した...
-
警告
マンスリーランキングこのカテゴリの人気マンスリー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の違い
おすすめ情報