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

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

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

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

Q&A

解決済

1回答

1344閲覧

どんな機能のプログラムなのか教えてください

kisanuki4649

総合スコア9

C

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

0グッド

1クリップ

投稿2015/07/10 09:41

char *str_func2(char *buf, char *str, int len)
{
int s_len;
int chk_len;
char *bufp;
bufp = buf;
chk_len = 1;

buf[len] = '\0'; if ((s_len = strlen(str)) == len) { strncpy(bufp, str, len); return(buf); } memset(bufp, '0', len); if (*str == '-'){ *(bufp++) = '-'; ++str; } if (s_len < len){ strcpy(bufp+(len - s_len), str); return (buf); } while (*str != '\0'){ if (*str != '0'){ break; } ++str; --s_len; } if (s_len <= len){ strcpy(bufp + (len - s_len), str); return (buf); } while (s_len > len) { if (*str == '.') { buf[0] = '\0'; return(NULL); } ++str; --s_len; } while (*str != '\0') { if (*str == '.') { *(bufp++) = '.'; ++str; chk_len = 2; } else { *(bufp++) = '9'; ++str; chk_len += ((chk_len >= 2) ? 1 : 0); } } chk_len += ((buf[0] == '-') ? 1 : 0); if (len < chk_len) { return(NULL); } return (buf);

}

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

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

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

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

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

guest

回答1

0

ベストアンサー

なんらかの数値データを書式変換するっぽいですね

len = 5, str = "123" ----> buf = "00123"
len = 5, str = "123456" ----> buf = "99999"
len = 5, str = "-123" ----> buf = "-0123"
len = 5, str = "12.34" ----> buf = "12.34"
len = 5, str = "12.345" ----> buf = "9.999"
len = 5, str = "123.45" ----> buf = "99.99"
len = 5, str = "1.2" ----> buf = "001.2"

len は表示有効桁で
str がそれを超える場合は 9 で表現し
不足している場合は 0 で埋める
マイナス値ならマイナス値で返す

len の桁数で制限したい理由があって
値がその桁数を超えてるときはMAX値にしたい
'0' で埋めておくのは・・・さらに何かの計算に使うとか
縦に並べたときに桁をキレイに揃えたいとかの都合かな?

投稿2015/07/10 12:11

takito

総合スコア3111

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問