• ベストアンサー

C言語のprintfで桁数をそろえる

次ので桁数をそろえると書いてあったけどやってみたらできなかった。 コンパイラはMS visual c++バージョンはおそらく7.1.3019 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a; scanf("%d",&a); printf("a=%3d\n",a); return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • hisa1972
  • ベストアンサー率53% (268/500)
回答No.3

特定の処理系に依存するものではないので、一般的な(ANSI C)規則でで書きます。 %3d は、「最低3桁まで出力する」という意味であって、4桁入力すれば 4桁になります。 32ビット int の範囲が -2147483648~2147483647 ですから、 %10d にして、最大の10桁まで表示するようにすればそろいます。

その他の回答 (3)

回答No.4

%3dは「少なくとも3桁です」 「やってみたけどできいなかった」 では質問の内容が回答者に把握してもらえません。 あなたが2桁入力したかもしれませんし、4桁かもしれません。 質問する側の人間の発言として、中学生のような言葉使いを改めてください。

回答No.2

"できなかった"とは? 桁がそろわなかったのですか? 要するに、何が訊きたいのですか?

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.1

4桁以上の数値を入力したわけでは無いですよね?

osiete_kun
質問者

補足

4桁以上の数値を入力したわけです。

関連するQ&A

  • 文字配列から数値への変換

    MicrosoftのVisual-Studio 2005を使っています。 C/C++については、ほぼ素人で、困っています。 下記のような簡単なソースで、 456 012 678 を表示するようにしたいのですが、できなくて困っています。 最初の 123 789 345 は下記のソースで表記できたのですが、どうすればよいの でしょう? 数値をわざと文字列で読み込んで、これを 数値に変換しているのでややこしいのかもしれませんが、 できればこれでやりたいので、申し訳ありませんが、教えていただ けないのでしょうか。よろしくお願いします。 #include "stdafx.h" #include "stdlib.h" char str[3][200] = { "123 456", "789 012", "345 678" }; int _tmain(int argc, _TCHAR* argv[]) { int a[10]; for (argc = 0; argc < 3; argc++){ a[argc] = atof(str[argc]); printf("%d\n", a[argc]); }; return 0; }

  • C言語のフローチャート

    昨日に引き続き失礼します。下記のプログラムを作成したのですがフローチャートは、どのように書けばいいのでしょうか? #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { char ss[10] = "abcdefg"; char *ssp; ssp =ss; while (1){ if (*ssp ==0) break; printf("文字 *ssp=%c\n",*ssp); ++ssp;} int ary[10] = {1,2,3,4,5,6,7,8,9,10}; int *pt; pt = ary; while (1) { if (*pt == 10) break; printf("値 *pt=%d\n",*pt); ++pt;} return 0; }

  • _TCHAR*での引数の読み込み

    VC++2010での、通常の #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; } のウィザードを使って、arvg[1]やargv[2]に引数を与えて、本体内で通常のCで使う printf("%s\n", argv[1]); や fopen(argv[1], "r"); を使いたいのですが、引数の型が_TCHAR*になっているため文字がそのまま使えません。 int main(int argc, char *argv[]) で使えば問題なく使えるのですが、デフォルトのウィザードを使った時の使い方を知っておきたいのです。 御経験のある方、御教示お願い致します。

  • c言語の関数で

    初歩的な質問ですみません。 学校で住所、電話番号などを表示する関数を作っているのですが、 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { void county(void); void address(void); void phone(void); void main(void) { county(); address(); phone(); return(0); } void county(void) { printf("A県B市"); } void address(void) { printf("Cハイツ105"); } phone(void) { printf("000-000-0000"); } } 上の文でビルドするとエラーを起こしてしまいます。どこが間違っているのでしょうか?

  • c++ TCHARで文字化け

    TCHARはUNICODEが扱えるときいたので早速つかってみた。以下は引数を表示するプログラムである。 Visual C++ Express Editionを使った。 #include <stdio.h> #include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) { int i=0; while(i<argc){ _tprintf(_T("%s\r\n"),argv[i++]); } return 0; } しかし上記プログラムに日本語の引数をわたすと文字化けするではないか。なでしょうか?

  • 関数に配列を渡した場合にサイズが

    C言語初心者です。 以下のように関数に配列を渡した場合、サイズが変わってしまうのは何故でしょうか。 #include "stdafx.h" void fanc(char [3]); int _tmain(int argc, _TCHAR* argv[]) { char a[] = {'a','b','c'}; printf("%d\n",sizeof(a)); // aのサイズ 3 fanc(a); return 0; } void fanc(char b[]){ printf("%d\n",sizeof(b)); // bのサイズ 4 }

  • C++の質問です!

    課題なんですけど分からないです(泣) 解答お願いします(;;) 下記のプログラム中の(1)~(7)には何が入るか? #include <stdafx.h> (3) sho((4)) //関数sho の定義 { return((5)m/n); } void irekae(int (6),int (7)) //関数irekae の定義(2つの引数をp,q とする、型に注意!) { int k; k=(6); (6)=(7); (7)=k; } int _tmain(int argc, _TCHAR* argv[]) //関数_tmain の定義 { int i,j; double x; printf("整数i,j?:"); scanf("%d%d",&i,&j); (1); //整数i,j を引数として実数除算した商を返す関数sho を呼び出す。 printf("i/j=%f¥n",x); //結果の確認 (2); //整数i,j の値を入れ換える関数irekae を呼び出す。 (1); printf("i/j=%f¥n",x); }

  • 【C++】関数ポインタの使い方

    関数ポインタの使い方で悩んでいます。 下記の (1)のようにグローバルメソッドとして定義したメソッドを関数ポインタに代入することは出来るのですが、 (2)のようにクラスのメンバメソッドとして定義したメソッドは関数ポインタに代入することは出来ませんでした。 Error:バインドされた関数へのポインターは関数の呼び出しにのみ使用できます。 というエラーが発生します。 関数ポインタに外部参照でメソッドを代入することは出来ないのでしょうか? -----(1)------------------------------------------------------------------ #include "stdafx.h" #include <iostream> using namespace std; int f(int a, int b){ return a * b; } int _tmain(int argc, _TCHAR* argv[]) { typedef int (* FUNC_POINTER)(int, int); FUNC_POINTER fp; fp = f; cout << fp(1,2) <<endl; getchar(); return 0; } ------------------------------------------------------------------------- -----(2)------------------------------------------------------------------ #include "stdafx.h" #include <iostream> using namespace std; class MPointerList{ public: int f(int a, int b){ return a * b; } }; int _tmain(int argc, _TCHAR* argv[]) { typedef int (* FUNC_POINTER)(int, int); FUNC_POINTER fp; //fp = f; MPointerList mP; fp = mP.f; cout << fp(1,2) <<endl; getchar(); return 0; } -------------------------------------------------------------------------

  • C#からDLLの呼び出し方

    visual studio 2008 express edition C#3.5 を使用しています。 http://www.hata.cc/docs/wlinee/1.html を参考にC++からではMySub関数を呼び出すことができたのですが、 C#から呼び出そうと次のように記述したのですが、 [System.Runtime.InteropServices.DllImport("a.dll")] extern int WINAPI MySub(int a, int b); 書き終わったときに、MySubの下に赤線がでて「;が必要です」 というエラーが出てしまいます・・・ たぶん「WINAPI」が認識されてないと思うのですが、 どのように記述すればよいのでしょうか? ~C++での記述~ [dllcall.cpp] #include "stdafx.h" #include <windows.h> #include <conio.h>  // getch( ) を使用するのに必要 extern int WINAPI MySub(int a, int b); int _tmain(int argc, _TCHAR* argv[]) { int c; c=MySub(9, 3); printf("ans=%d\n",c); getch();// キーが押されるまで待つ return 0; } [a.cpp] __declspec(dllexport)int WINAPI MySub(int a, int b) { return a-b; }

  • C++の配列について教えてください。

    C++の配列について教えてください。 なぜ平均のところだけ少数以下がすべて0になってしまうのでしょうか。 ご教授お願いします。 //--- ソース --- #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { int no[100],ten1[100],ten2[100],ten3[100],i,n; double a[100]; scanf("%d", &n); for(i=0; i<n; i++) scanf("%d%d%d%d", &no[i], &ten1[i], &ten2[i], &ten3[i]); for (i=0; i<n; i++) { a[i] = (ten1[i] + ten2[i] + ten3[i]) / 3; } printf("番号 地理 歴史 日本史 平均\n"); for(i=0; i<n; i++) printf("%2d%8d%5d%4d%7.1f\n", no[i], ten1[i], ten2[i], ten3[i], a[i]); return 0; } //--- 実行結果 --- 10 1 35 57 45 2 57 69 67 3 74 65 84 4 45 67 39 5 26 67 29 6 86 77 57 7 13 26 67 8 98 85 58 9 54 50 34 10 45 63 19 番号 地理 歴史 日本史 平均 1 35 57 45 45.0 2 57 69 67 64.0 3 74 65 84 74.0 4 45 67 39 50.0 5 26 67 29 40.0 6 86 77 57 73.0 7 13 26 67 35.0 8 98 85 58 80.0 9 54 50 34 46.0 10 45 63 19 42.0 3.14159 3.14159

専門家に質問してみよう