• ベストアンサー

%*cの使い方

HOGERA3の回答

  • ベストアンサー
  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.3

>*はこの変換文字列を用いるときも桁数になるのでしょうか?? 「この変換文字列」って"%*c"のことですか? だとしたら、答えは「はい」です。 printf("%*c\n", 8, 'a'); /* 試してみましょ */ printf("%c\n", 'a'); /* 試してみましょ(違いがわかるはず) */ >私も何故1文字飛ばせるのかさっぱりです^^; もしかして 「入力された文字を1文字読み飛ばす」 という意味ではなくて、 「printf()の引数が1つ無視される(と思ってる)」 ということかもしれません。 つまり、 printf("%c: %*c", 'a', 'b'); とすると a: b とは表示されずに a: しか表示されない(変な文字が表示されるかも)から 「上記printf()の第3引数 'b' が飛ばされた」 と勘違いしているのかな? って思ったり思わなかったり...。

kogara
質問者

お礼

お返事有難うございます! >>printf("%*c\n", 8, 'a'); >>printf("%c\n", 'a'); 試させていただきました! たしかに普通は % * は指定した桁数分スペースが入り ますね! %*cはやはりサイトの勘違いなのでしょうか^^; 返って来るか分かりませんが一応HPの管理人にメールをして確認してみたいと思います。

関連するQ&A

  • c言語のポインタへの文字列入力についてです。

    当方c言語初学者なのですがscanfを使ってポインタに文字列を入力したいのですがバグが発生して進みません・・・どういうことなのでしょうか? #include <stdio.h> int main(void) { char *a; scanf("%s", a); printf("%s", a); return (0); } *aをa[128]; のように配列に変えるとうまくいくことはなんとかわかるのですが・・・助けてください(^_^;)

  • C言語 strcmp 半角スペースがあるとだめ?

    C言語 strcmp 半角スペースが文字列に含まれている場合 文字列の比較がうまくいきません。半角スペースがあると比較できないのでしょうか? プログラム //strcmp #include <stdio.h> #include <string.h> int main(void){ char input[256]; char str[] = "HelloWorld!";   //char str[] = "Hello World!";だとうまくいかない。 printf("%s\n>", str); scanf("%s", input); if ( strcmp(input, str) == 0){ printf("同じです。\n"); }else{ printf("違います。\n"); } return 0; }

  • C言語の初心者です。これを実行してみてください。

    「a」って打ち込んだら「a」ってでましたか? #include<stdio.h> int main(void){ char a; printf("aaa\n"); scanf_s("%c", &a); printf("%c", a); return 0; }

  • C言語の問題が解けません!

    僕は、C言語を勉強しているのですがこの問題の答えがわかりません。 どうか教えてください。 回答お願いします。 ・問題・ 10文字以内の2つの英単語を入力し、アルファベット順で最初にくる単語を表示するプログラムを作りなさい。 /プログラム/ #include<stdio.h> #include<string.h> int main(void) { char str1[256],str2[256]; int i; printf("文字列1は?"); printf("文字列2は?"); return 0; }

  • c言語についての質問です。

    #include<stdio.h> int main(void){ int a; printf("1文字たいぷしてください。\n"); scanf("%d",&a); if(a>=65 && a<=90){ printf("大文字です。\n"); } else if(a>=97 && a<=122){ printf("小文字です。\n"); } else{ printf("大文字でも小文字でもありません\n"); } return 0; } このプログラムは正しくなくて、 intをchar %dを%cにかえなければなりません。 なぜintはダメなんでしょうか? できれば丁寧に教えてください。 お願いします。

  • C言語 文字列の操作

    文字Cが含まれる個数を求めたいです #include <stdio.h> int str_chnum(const char str[],int c) { int i; int count=0; for(i=0;str[i]!="\0";i++) if (str[i]==c) count++; return(count); } int main(void) { char st[100]; printf("検索文字列を入力してください:"); scanf("%s",st) ; printf("検索文字列数は%uです。\n",st,int str_chnum(const str[],int c)); return(0); } コンパイルできません。なぜですか?printfの行がたぶん間違っていると思うんですが。。。

  • C言語でscanf()が先に実行されるのはなぜですか?

    C言語でscanf()が先に実行されるのはなぜですか? #include <stdio.h> int main(void){ int intNum; printf("整数を入力してください:\n"); scanf("%d", &intNum); printf("入力値は:%d\n",intNum); return(0); }

  • C言語の無効な値が入力されたときの繰り返しについて

    C言語で最初に入力した整数の5倍になるまで何度も入力を促すプログラムでわからないところがあるのですが #include  "stdio.h" int main() { int a ; do { printf("input a:"); scanf("%d",&a); } while( )     ← printf( ) ←この二つの()内の文字をどうすればよいのか分かりません return 0; } 教えていただけないでしょうか

  • ASCIIコード入力

    プログラムを作っていてどうしてもわからなくなりまして… #include <stdio.h> int main(void) { char c; c=38; printf("%c\n",c); return 0; } この場合は&が出てくるからいいんですけど… #include <stdio.h> int main(void) { char c; scanf("%c",&c); printf("%c\n",c); return 0; } この場合は97をscanすると9が出てきます。ASCIIコード入力でaを表示させたいんですが、何が間違っているのでしょうか? 初心者なもので…お願いしますm(__)m

  • ポインタについて

    #include<stdio.h> int main(void) { char str[10]; char *ptr = str; printf("文字列を入力してください。\n"); scanf("%s",ptr); printf("文字列は%sです。",str); return 0; } 上記のプログラムのscanf("%s",ptr);の ptrに&をつけるとなぜ先頭の4文字は入力しても 表示されなくなってしまうのでしょうか? よろしくお願いします。