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

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

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

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

Q&A

解決済

6回答

6441閲覧

C言語 数字を「,」で区切る

Tosshi

総合スコア21

C

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

0グッド

0クリップ

投稿2018/09/16 04:03

入力した数字を3桁毎に「,」で区切る方法を知りたいです。

例>
入力 1234567890
出力 1,234,567,890

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

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

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

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

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

cateye

2018/09/16 07:57

えっと、数字でしょうか数値でしょうか?
guest

回答6

0

残念ながらC言語でそういう形式の出力の標準の方法はありません
ですんで、そういう関数を組むしかありません。

「C言語 3桁区切り」でぐぐれば、その手の記事が引っかかります。見てみてください

投稿2018/09/16 05:04

y_waiwai

総合スコア87774

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

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

0

ベストアンサー

C

1#include <stdio.h> 2#include <string.h> 3 4#define BUFSIZE 256 5 6int main(void) 7{ 8 char buf[BUFSIZE]; 9 int i = -1; 10 int n; 11 int count = 0; 12 fgets(buf,sizeof(buf),stdin); 13 n = strlen(buf); 14 15 while(i < n){ 16 printf("%c",buf[++i]); 17 if((n - i) % 3 == 2 && count < (n - 2) / 3){ 18 printf(","); 19 count++; 20 } 21 } 22 23 return 0; 24} 25

投稿2018/09/16 10:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

くぐって見たのですが、楽しそうなのが分からなかったので、ちょっと頭の体操。

C

1 int num = -2412; 2 int len, len2, comma; 3 int lastPos; 4 5 char str1[96]; // サイズに特に意味無し (オーバーしないように) 6 7 len = sprintf(str1, "%d", num); 8 if (num < 0) { // 先頭のマイナス符号対策 9 len2 = len + (len - 2) / 3; 10 lastPos = 1; 11 } else { 12 len2 = len + (len - 1) / 3; 13 lastPos = 0; 14 } 15 comma = 4; // 最初は終端の nullコピーのため 16 17 while (len > lastPos) { 18 str1[len2--] = str1[len--]; 19 comma--; 20 if (comma == 0) { 21 comma = 3; 22 str1[len2--] = ','; 23 } 24 } 25 26 printf("%s : (%d)", str1, num);

簡単にできるかと思ったので、結局、変わらない? (未確認)

入力数値は、固定で確認。エラーチェックは特にしてません。
Visual stdio 2017で確認。

投稿2018/09/16 09:36

pepperleaf

総合スコア6383

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

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

0

数値をカンマ付の文字列に変換するプログラム、ATMの記帳システムで作成しました。
そのままでは問題あるので、日本語変数で登録します。(数年バグの報告はないので問題ないでしょう)

char *DecCma(__int64 数) {
int ix;
__int64 商, 余;
char 列[8][4];
static char 出[64];
if (数 < 0) { 商 = 数 * -1; } else { 商 = 数; }
memset(列, 0x00, sizeof(列));
memset(出, 0x00, sizeof(出));
for (ix = 0; 商 != 0; ix++) { 余 = 商 % 1000; _i64toa(余, 列[ix], 10); 商 = 商 / 1000; }
if (数 < 0) { 出[0] = '-'; }
for (ix--; ix >= 0; ix--) {
if (ix != 0) { sprintf_s(出 + strlen(出),64, "%s,", 列[ix]); }
else { sprintf_s(出 + strlen(出),64, "%s", 列[ix]); }
}
if (出[0] == 0x00) { 出[0] = '0'; }
return(出);
}

投稿2023/08/12 09:39

MasamiWatanabe

総合スコア10

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

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

0

Cなど不要。そう、シェル芸ならね!

bash

1$ echo 1234567890|rev|sed 's/(...)/\1,/g'|rev|sed 's/^,//' 21,234,567,890

投稿2018/09/16 10:58

hichon

総合スコア5737

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

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

Tosshi

2018/09/17 06:23

これは何をしているんですか?
pepperleaf

2018/09/17 07:05

Bashで 3桁毎に区切り(,)を入れている。シンプルなので、思わず + と思ったが、良く考えると、Cじゃない。
Tosshi

2018/09/17 07:06

わざわざありがとうございます
guest

0

3文字ずつぶった切って間に','を挟む。

投稿2018/09/16 08:46

episteme

総合スコア16614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問