質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

6806閲覧

C言語で指定文字列でポインタ配列を分割したい

Subaru

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2015/05/21 02:04

ポインタ配列内の文字列を改行2回が来たならば、そこを境にbuf2に入れたいのですがうまくいきません
なぜか、buf2にbuf1の2行目だけ入ってしまっています
どうしたらいいのでしょうか?

lang

1char *buf1;//分割したい文字列 2char *buf2;//指定文字列より後ろの文字列 3 4buf2 = strtok(buf1, "\n\n"); //改行が2回続いたら分割 5fprintf(stderr, "1:%s\n",buf2);//表示

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

strstr()の実装例があります。
これを参考にして、ご自身でも strstr を実装してみるとよいと思います。

投稿2015/05/21 15:47

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

改行2個固定ですが以下のようにすれば出来ます。
~/m_m cat tst.c
#include <stdio.h>

void cdr(const char *buf1p, char *buf2p)
{
while( *buf1p ){
if( *buf1p == '\n' && *(buf1p+1) == '\n'){
buf1p += 2;
break;
}
buf1p++;
}
while( *buf1p ){
*buf2p++ = *buf1p++;
}
*buf2p= '\0';
}

int main()
{
char buf1[]= "test1\n\ntest2";
char buf2[20];
//
cdr(buf1,buf2);

fputs(buf2,stdout); putchar('\n'); return 0;

}
~/m_m ./a.out
test2
~/m_m
区切りにする文字列を固定にしないのであればstrstr()がいいと思います。

投稿2015/05/21 03:43

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

strtokは、第2引数に来た「どれかの1文字」で区切るので、「改行2つ」で区切ることはできません。

投稿2015/05/21 02:07

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Subaru

2015/05/21 02:15

具体的にはどのようにすれば改行2回で分割できるのですか?
maisumakun

2015/05/21 02:19

strstrという関数で文字列内から別な文字列を検索できますので、それで位置を取得して、あとは数えつつ自力で切り出すしかありません(C言語は文字列処理をする標準ライブラリがきわめて貧弱です)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問