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

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

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

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

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

4回答

1511閲覧

C言語でカンマで区切られたcsvファイルの中でカンマを使いたい

genchan2000

総合スコア2

C

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

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/13 06:41

前提・実現したいこと

カンマで区切られたcsvファイルの中でカンマを使いたいです。
例えば、fpointf(fp,"[a,b],[c,d]")としたときに、[a,b]と[c,d]とで区切りたいです。何か方法はあるのでしょうか。

補足情報(FW/ツールのバージョンなど)

visual studio 2019を使用しています。

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

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

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

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

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

guest

回答4

0

先頭と最後の1文字を省けば、],[で区切れば良さそうですけど。
若しくは、区切り後に、[]を除去する。

投稿2021/05/16 06:39

編集2021/05/16 06:56
sazi

総合スコア25206

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

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

0

genchan2000さんが、自分で書いたプログラムで二重引用符を使ってファイルをCSV形式で書込み、自分で書いたプログラムでそれを読み込んで使うのであればitagagakiさんとepistemeさんが書かれているように二重引用符を使うのがベストです。

ただし、CSV(Comma-Separated Values)の規格(rfc4180)の2.5では、二重引用符で囲むことが認められていますが、その意味は規定していません。また、二重引用符を使えないプログラムはあると書かれています。

つまり、genchan2000さんが二重引用符を使って作ったCSV形式のファイルが、エクセルであるとか、他の人が作ったプログラムとかで思ったように読み込んでもらえるかどうかはわからないということに注意してください。

投稿2021/05/13 22:34

ppaul

総合スコア24666

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

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

0

C

1#define _CRT_SECURE_NO_WARNINGS 2#include <stdio.h> 3#include <stdbool.h> 4#include <string.h> 5 6const char* csv_quote(const char* str) { 7 // str が " あるいは , を含むとき全体を " で囲む 8 static char buffer[256]; 9 bool quote = strchr(str, '"') || strchr(str, ','); 10 char* p = buffer; 11 if (quote) *p++ = '"'; 12 while ( *str ) { 13 if ( *str == '"' ) *p++ = '"'; // " → "" 14 *p++ = *str; 15 ++str; 16 } 17 if (quote) *p++ = '"'; 18 *p = '\0'; 19 return buffer; 20} 21 22int main() { 23 FILE* fp = fopen("test.csv", "w"); 24 fprintf(fp, "%s,", csv_quote("[a,b]")); 25 fprintf(fp, "%s\n", csv_quote("[c,d]")); 26 fclose(fp); 27 28 return 0; 29}

投稿2021/05/13 07:03

編集2021/05/13 07:33
episteme

総合スコア16614

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

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

0

多くの場合、カンマを含む文字列は二重引用符"で囲むというのが通常の取り決めになっています。
二重引用符を表現するときは""と二重引用符を2つ続けます。

投稿2021/05/13 06:49

itagagaki

総合スコア8402

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問