• ベストアンサー

red hat 8.0 の PROGRAMING

この度、red hat linux 8.0を入れてみたのですが、その環境での C言語の挙動がおかしいのですが、いままでと何か変わったのでしょうか? 例えば、 ---------------------- #include <stdio.h> int main() { printf("AAAA"); return 0; } ---------------------- このような簡単なものを、コンパイルして実行してみると何と驚いたことに、"AAAA" が画面上に出力されません。なぜ??

  • y_s-u
  • お礼率45% (68/150)

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

  • ベストアンサー
回答No.2

シェルは何を使っていますか? プロンプトはどう設定していますか? シェルによって、あるいはプロンプトの設定によって、プロンプトが必ず行頭に表示される設定になっている場合は、改行なしのAAAAが上書きされて消えてしまうことになります。 プロンプトを%の1文字にしてみるか、AAAAに\nをつけて試してください。

y_s-u
質問者

お礼

ありがとうございます。 家に帰ったら試してみます。

y_s-u
質問者

補足

シェルはbashです。 プロンプトはデフォルトのままで、自分では特に設定はしていません。

その他の回答 (2)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

外しましたか… > 画面への出力系当たりがredhat8.0 になって変わってしまっ > たのでしょうか? さーて? 手元の環境(kterm, console)では再現しません つーか,再現したら大変. 端末ソフトは何をお使いですか?

y_s-u
質問者

お礼

いろいろとありがとうございました。 試してみたところおそらく、プロンプトが必ず行頭に来ることが問題らしいです。なので、少ない出力は、プロンプトの下敷きになったようです。

y_s-u
質問者

補足

ご回答ありがとうございます。 端末ソフトはgnomeのノーマルな端末です。 ktermも試してみたのですが。。。 シェルの問題なのでしょうか?

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

ひょっとして,実行バイナリは test という名前で $ test <enter> とかやってませんか? それなら何も表示されなくて,当たり前です. $ which test $ man test とかで調べてみましょう.

y_s-u
質問者

補足

いえ、実行バイナリはいろいろ変えてやってみたのですが。。。実行バイナリ名は a.out、e、etc... としてみました。 ちなみに $a.out > dddd などとリダイレクトしてみるとそのファイルには出力結果が書き込まれています。 画面への出力系当たりがredhat8.0 になって変わってしまったのでしょうか?

関連するQ&A

  • C言語で乱数がうまく効きません。下記のソースでコンパイルして実行すると

    C言語で乱数がうまく効きません。下記のソースでコンパイルして実行すると結果が130固定となってしまいます。 #include <stdio.h> #include <stdlib.h> int main(void){ int x; x = rand(); printf("%d",x); return 0; } 使っているコンパイラはBorland C++ 5.5.1です。何か間違いでもあるのでしょうか?よろしくお願いします。

  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • printf()関数の括弧を二重にして、printf((~~~))とし

    printf()関数の括弧を二重にして、printf((~~~))として コンパイル/実行すると、実行時セグメンテーション違反が発生します。 コンパイル時には警告も発生しますが、このセグメンテーション違反が なぜ起こるのか理由がよくわかりません。ご回答いただけるとありがたいです。 以下、サンプルコードと実行例です。よろしくお願いいたします。 ---mytest.c---- 1 #include <stdio.h> 2 3 int main(void){ 4 5 //printf("test:%d", 1)ではもちろんコンパイル/実行に成功する。 6 printf(("test:%d", 1)); 7 return 0; 8 } 【コンパイル/実行結果/gccバージョン】 #gcc main.c main.c:6:警告:passing argument 1 of printf makes pointer from integer without a cast #./a.out セグメンテーション違反です # gcc --version gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27) ・ ・

  • プログラミングの質問です。学校でLinuxを使ってプログラミングを授業

    プログラミングの質問です。学校でLinuxを使ってプログラミングを授業中にかじったのですが、 Windowsでのコンパイルの仕方がわからなくて困っています。 ちなみに下は、私がつくったものです #include <stdio.h> int main(void) { printf("あほじゃないの?"); return(0); }

  • 結果がおかしい

    ソフトはvisual C++を使ってます。 C言語を本で勉強してて次のようなソースファイルを作ってコンパイルして、実行しました。この場合、結果は 105と表示されると思うのですが、0と表示されます。なぜなのか教えてください。 #include<stdio.h> int main() { printf("%d\n",100*1.05); return(0); } 結果 0

  • C言語について

    #include <stdio.h> int main(void) { printf("123456\tABC DEFGHIJK\n"); printf("2006/4/14\n"); printf("programing\n"); } のprintfをすべてputsに書き換えてコンパイル・実行すると、 #include <stdio.h> int main(void) { puts("123456\tABC DEFGHIJK\n"); puts("2006/4/14\n"); puts("programing\n"); } になると思うんですけど、そのputsを用いて上のprintfを用いたプログラムと同じ出力を得るにはどのようなプログラムに変えればいいのでしょうか?

  • registerと配列

    ある本に以下のような書き出しでプログラムが載っています。 >register付きで宣言された配列の先頭要素の値を表示(動作しない)< #include<stdio.h> int main(void) { register int x[5]; printf("x[0]の値は%dです。\n",x[0]); return 0; } 配列はコンパイルする段階で*(a+0)とポインタに変換されるとは理解しているのですが、私の環境(Red Hat Linux)では動作してしまいます。 さすがに、 printf("&x[0]の値は%pです。\n",&x[0]);とすると>registerにかかわらずポインタの値を求めています<という警告がでますが、 本では>動作しない<と書かれていますが、きちんとコンパイルも行われ>動作します< これはどの様に考えたらよいのでしょうか?宜しく願います。

  • 「\b」が使えません;;

    「\b」が使えません;; こんばんは。 突然ですが、「\b」が使えません。 例えば、 #include<stdio.h> int main(){ printf("abcde"); printf("\b\b"); printf("ba"); return 0; } を実行すると「abcba」ではなく「abcdebc」と出力されてしまいます。 使っている環境はxcode3.2.2です。 何がおかしいのか教えて下さいm(_ _)m

  • 一番最初でつまずいてます!!

    Borland C++Compilerをインストールしてプログラミングの勉強をし始めたばかりです。 #include<stdio.h> int main(void) { printf("はじめてのC言語プログラム"); return 0; } と入力してコンパイルすると 「インクルードファイル'stdio.h'をオープンできない」 というエラーがでました。 何度も見直したし、環境変数も合わせてるのになぜでしょうか!?

  • ビープ音が鳴りません・・・

    C言語での制御文字「\a」を使ってビープ音を出したいのですが出ません。何がおかしいのでしょうか? ・・・・・・・・・・・・・・・・・・・・・・・・・ #include <stdio.h> main () { printf("\a"); return 0; } ・・・・・・・・・・・・・・・・・・・・・・・・・ これをコンパイルして実行しても何も起きないのです。 昨日から独学でがんばっているのですが、早々に詰まってしまいました。^^; お分かりになられる方がいらっしゃれば教えてください。 おねがいします。