• ベストアンサー

簡単だと思うんですがわかりません

printf("………\n\ (スペース) あ"); これを実行すると、 ……… (スペース) あ となってしまって、『あ』が左詰めになりません。 プログラムが長いので見やすくするために\で改行して書いたんですが、どうすればいいのでしょうか。どなたかお願いします。 ちなみに、プログラム上で『あ』を右に持って行くときにTabキーを使ってみましたがそれでは動かなかったので、スペースキーを使い上のような状態にしました。 (スペース)←としたのは、質問を投稿するとあたかも左詰めで投稿したかのように表示されてしまったためですので、分りにくいかもしれませんがご了承下さい。 ほんとうは、"の下に『あ』がくるように書いてます

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

文字列が (空白文字を入れて) 連続しているときには自動的に 1つの文字列になりますので, #1 のように 2つの文字列に切るなら printf("………\n" (スペース) "あ"); で OK です. 最初の行末に \ は入れなくていいです.

Neptune23
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

いや, C でも行末に \ を置けば行の継続は可能ですよ>#3. 「プリプロセッサでは~」というのは, まさにこの機能そのものですし. ただ, C のソースにおいて改行が意味を持つのは実質的にプリプロセッサ指令だけなので, それ以外の場面で「\ による行の継続」が必要なことはほとんどありませんが. だからこそ, #2 では「入れなくてもいいです」と書いたんだけど. 「\+改行」というエスケープシーケンスは存在しないので, 「文字列リテラル中に『\+改行』を入れる」というのはやらない方がいいです.

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★アドバイス  正しくはNo.2さんの指摘どおりです。 >プログラムが長いので見やすくするために\で >改行して書いたんですが、どうすればいいのでしょうか。  ↑  VB、VBScriptでは『\』記号で行連結できますがC/C++では利用できません。  文字列の場合は『"』文字で囲ったものを続けて書くだけで連結されます。  例1:  printf( "あいうえお\nかきくけこ\nさしすせそ\n" );  例2:  printf( "あいうえお\n"      "かきくけこ\n"      "さしすせそ\n" );  例3:  printf( "あいうえお\n" );  printf( "かきくけこ\n" );  printf( "さしすせそ\n" );  ※例1~例3はどれも同じ表示結果になります。 ・それから『#』から始まるプリプロセッサでは1行が長いとき、  行末に『\』文字を書くことで行連結します。  通常のソースではVBとは違って『\』文字で行連結しません。

Neptune23
質問者

お礼

ご丁寧にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Apr2nd
  • ベストアンサー率69% (36/52)
回答No.1

書かれているコードでは(スペース)と書かれている部分も文字列の一部と見なされてしまいますので 以下の様に最初の行の¥の前に「"」を入れ、2行目の「あ」の前にも「"」を入れればよいと思います。 printf("………\n"\ (スペース)"あ");

Neptune23
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • パックスペースが出来ません。

     今回ファイル関係の命令(fopenなど)の練習の為、テキストファイルに足跡を書くプログラムを書きました。 [例]右3歩   ***   下2歩   ***       *      *  右、下はすぐ出来たのですが、左、上となると移動する分バックスペースで消さなくてはならなくなったので、  fprintf( fp, "\b" ); を含めたcase文を書きました。  しかし、結果のテキストを見てみると"\b"の部分が|になっていてバックスペースがなされていませんでした。タブの"\t"や改行の"\n"は実行されるのに、バックスペースは出来ません。  そこでなのですが、テキストファイルに出力する場合バックスペースはどうやればよいのでしょうか?  よろしくお願いします。

  • プログラムがmain関数から始まらない??

    C言語初心者です。よろしくお願いします。 return文について勉強している途中だったのですが、次のプログラムを実行してみたところ、わからないことが出てきたので質問させていただきました。(ほとんど自分で作ったプログラムではないです) #include <stdio.h> /* 関数a()はintを返すと指定 */ int a() {     if (1) {          /* ここで関数a()は終わります */          printf("yes1\n");          return 300;     }     pritnf("yes2\n");     /* ここは通りません */     printf("this is a()\n");     return 10; } int main() {     int i;     /* 関数a()の返り値を変数iに代入します */     i = a();     printf("i = %d\n", i);     return 0; } このプログラムの出力結果は yes1 i = 300 となるのですが、 1.以前「main関数からプログラムは開始する」というようなことを学習したのですが、このプログラムではyes1が出力されていることからa関数からプログラムが始まっていませんか? 2.a関数のif文の中のreturn 300;でプログラムが終了しないのはなぜですか? 知識のある方、どうか教えてください。 よろしくお願いします。 ※ このプログラムを表示させる際、Tabキー及び半角では適度な空白スペースを作ることができなかったので、プログラムを見やすくするための空白スペースは全て全角スペースで作ってあります。(もしかしたら普通に表示させる方法があるのかもしれませんが、わかりませんでした。)

  • 間違いを指摘して頂けませんか?(切実)

    私は大学で春からプログラミングの基礎を学び始めたプログラミング初心者です。 今、if関数のネストについて習っていて、if関数のネストを利用したプログラム作成の課題が出て、一応書いてはみたのですがどうしても上手くいきません。下に課題の内容と私の書いたプログラムを書いておきますので、間違っている箇所を指摘、修正して貰えませんか?宜しくお願い致します。 【課題】 次の項目に従ってプログラムを作成せよ。 (1)整数型の変数noを宣言 (2)「整数を入力してください。」と表示して改行 (3)キーボードから入力された値を変数noに代入 (4)入力された値が ・偶数で4で割り切れる数なら「整数○は偶数で4で割り切れます。」 ・偶数で4で割り切れない数なら「整数○は偶数だけど4で割り切れません。」 ・奇数で3で割り切れる数なら「整数○は奇数で3で割り切れます。」 ・奇数で3で割り切れない数なら「整数○は奇数だけど3で割り切れません。」 の○の位置にnoの値を当てはめて表示した後、改行 #include <stdio.h> main(void) { int no; printf("整数を入力してください。\n"); scanf("%d",&no); if(no/2==0,no%4==0){ printf("整数%dは偶数で4で割り切れます。\n",no); }else{ if(no/2==0,no%4!==0){ printf("整数%dは偶数だけど4で割り切れません。\n",no); }else{ if(no/2!=0,no%3==0){ printf("整数%dは奇数で3で割り切れます。\n",no); }else{ printf("整数%dは奇数だけど3で割り切れません。\n",no); } } } } ※なお、上のプログラムは全て左詰めになってしまっていますが、質問する上で表示出来なかっただけですので…実際にはちゃんと然るべき箇所にTabキーによる余白は入れてあります。

  • インデントってどうやって表示するの?

    プログラムのソースプログラムをウェブに載せたいのですがホームページビルダーなどに ソースをこぴぺすると全て字下げがなくなってしまいます。 こんな感じです。 #include<stdio.h>   int main(){     printf("hello\n");   return 0; } これが #include<stdio.h> int main(){ printf("hello\n"); return 0; } こうなってしまうわけですね。 字下げはTABキーのインデントで行っています。 1行ずつスペースを書いていけばいいのでしょうけど 何しろ何百行もあるソースですのでそれは無理です。 字下げを失わずにHTMLに変換することできないでしょうか?

    • ベストアンサー
    • HTML
  • Dream Weaverの改行時にTabキーでスペースが入らないようにしたい

    Dream Weaverの標準かどうか、わかりませんが、 Enterキーで改行時に、自然に、Tabキーでスペースがとられています。 Tabキーでスペースがとられていると、ブラウザによって、 ソースが崩れるので(Tabを4スペースや、8スペースとして扱ったりする) 改行時に、自然とTabではないスペースが入るように設定したいのですが 「編集」→「環境設定」を見ても、それらしきものがなかったので、 困っています。 設定方法があるのであれば、教えてください。 よろしくお願いいたします。

  • 簡単なfor文

    #include <stdio.h> int main(void) { int n; int i; for(n=0 ;n<10;n++){ for(i=0; i<=n ;i++){ printf("*"); } printf("\n"); } return(0); } こういったプログラムを実行すると、以下のように表示されるのですがなんででしょうか? * ** *** 以下略 自分の考えですと、*は毎回一つしか表示されずに改行されると思うのですが・・・ * * * * 以下略 i個分の*を表示するなどという指示をプログラムはなされていないと思うのですがなぜなんでしょうか? 一つ目のfor文では10回ループが繰り返され改行 二つ目のfor文で*を永遠に表示 といった僕の解釈ではおかしいですよね。 当方C言語初心者で、周りに聞く人がいないため教えていただけると非常に助かりますm(__)m

  • どこがおかしいか教えてください。

    以下のようなプログラム(書きかけ)を実行したら、下の(実行結果)のようになりました。 rad=deg+1;って書いたのに実行するとradが30のままなのはなぜなのでしょうか??教えてください #include <stdio.h> main() { double deg,rad; printf("sin degの値を計算します。\n"); printf("deg(角度)を入力せよ。:"); scanf("%d", &deg); printf("deg=%d\n",deg); printf("sin %d を計算します。\n",deg); rad=deg+1; printf("degをrad表示すると %d\n", rad); return(0); } (実行結果) sin degの値を計算します。 deg(角度)を入力せよ。:30 deg=30 sin 30 を計算します。 degをrad表示すると 30 Press any key to continue

  • プログラミングの間違いを…

    度々の似たような発言、大変申し訳ありません。お許し下さい。 もう1つ実行が上手く出来ないプログラムがある事を忘れていました。以下のプログラムについても、まだまだ未熟な私には間違っている箇所が全く分からないので、C言語プログラミング熟練者の方々、どうか指摘して下さると有り難いです。宜しくお願い致します。 ●for文の2重ループを使い、入力された星の行数に対して、下図のような表示になるようなプログラム。なお、このプログラムでは、中のループで表示するスペースの数を変え、その後にアスタリスクを表示している。 星の行数を入力してください。 6 *  *   *    *     *      * (1)整数型変数のi,j,noを宣言する (2)“星の行数を入力して下さい。”と表示し、入力された値をnoに読み込む (3)for文により、カウンターiが1からnoまで、(4)、(6)の処理を繰り返す (4)for文により、カウンターjが1からi未満まで、(5)の処理を繰り返す (5)半角スペース1つ(“ ”)を表示する (6)半角のアスタリスクを表示し、改行する #include <stdio.h> main(void) {   int i,j,no;   printf("星の行数を入力して下さい。\n");   scanf("%d",&no);   for(i=1;i<=no;i++){     for(j=1;j<i;i++){       printf(" \n");     }     printf("*");     printf("\n");   } }

  • C言語について  

    わからないのでよろしくお願いします。何回やってもうまく表示できません。 整数を入力し、入力された整数の数だけ「*」を横一列に表示し、最後に改行するプログラムを while 文を使って作りなさい。 但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。 ▼10が入力された場合の実行例 ********** #include<stdio.h> int main(void) { int n, kai; scanf("%d",&n); printf("\n nyuryoku=%d",n); while(0<kai){ kai=kai--; printf("*"); } kai=n; printf("\n"); }

  • 矢印キーの反応が悪くなります

    このコードをmain関数とキーコントロール関数とに分けたところ、 キーのレスポンスがわるくなりました。 このソースコードをどのように分割すれば一つのファイルで書いたように、 動いてくれるのかわかりません。 よろしくお願いします。 /* 分割前のソースコード */ #include <stdio.h> #include <conio.h> int main(int argc, char *argv[]){ int key=0; while(key!='q'){ //終了キー 'q' key=_getch(); //Keyによって分岐 switch((key == 0x00 || key == 0xe0) ? _getch(): key) { case 0x48:printf("上");break;//上 case 0x50:printf("下");break;//下 case 0x4b:printf("左");break;//左 case 0x4d:printf("右");break;//右 default:break; } } return 0; } /*--ここから下が分割してみたソースコード---*/ /* arrowkey.h */ #ifndef ARROWKEY_H #define ARROWKEY_H int arrowkey(void); #endif //ARROWKEY_H /*---------------------------------*/ /* arrowkey.c */ #include <stdio.h> #include <conio.h> #include "arrowkey.h" int arrowkey(void){ int key=_getwch(); //Keyによって分岐 switch((key == 0x00 || key == 0xe0) ? _getch(): key) { case 0x48:printf("上");break;//上 case 0x50:printf("下");break;//下 case 0x4b:printf("左");break;//左 case 0x4d:printf("右");break;//右 case 0x71:break;//終了 default:break; } return key; } /*---------------------------------*/ /* main.c */ #include "arrowkey.h" int main(int argc, char *argv[]){ int key=0; while(key!='q'){ //終了キー 'q' key=arrowkey() } return 0; }