• ベストアンサー

C言語について質問です

windowsで作ったプログラムで、プログラムの途中にscanfを入れて、何か入力されるまで処理を停止するというプログラムを作りました。 これを同じようにリアルタイムのUbuntuでも作って実行してみたところ、プログラムがscanfを入れた部分で停止してしまいました。 LinuxとWindowsでプログラミングの仕方が違うのでしょうか。 Linuxでキー入力されるまで処理を停止するようなプログラムを作るにはどうしたらいいのでしょうか。。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.4

>「scanfを入れた部分で停止した」というのは、そこでプログラムが終了してしまった。という意味です。 正常終了したのならおそらくプログラミングミス。 異常終了したのならそれに加えてコンパイルミス・実行環境設定ミスの可能性もあります。

その他の回答 (3)

回答No.3

>C言語について質問です ソース貼らないから、スレ違い。

参考URL:
http://bekkoame.okwave.jp/205/233/c696.html
  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

その現象を再現できる、最小限のソースを貼ってください。

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

うん? 「プログラムがscanfを入れた部分で停止してしまいました」とは, 具体的にはどういうことでしょうか? 「停止した」というのがどういう状況を指しているのか分かりません. 単にキーボードからの入力を待っていると言うことはありませんか? そうではないとしたら, そうではないことをどう確認したのですか? なにかメッセージなどは出ませんでしたか?

michiko_20
質問者

補足

説明不足で申し訳ありませんでした。 「scanfを入れた部分で停止した」というのは、そこでプログラムが終了してしまった。という意味です。

関連するQ&A

  • C言語で、ioctlを使用し入力待ちつつ実行を続けたい

    C言語で入力を読むときgetc関数やscanf関数を 使用することが多いのですが これらの関数を使用すると入力が完了するまで そこでプログラムの実行がストップしてしまい リアルタイムで処理できません そこでioctlを使用して ioctl(0, I_NREAD, &n) というコードを書き、入力があったかどうかを調べようと思いました ところがこの方法だとenterが入力されない限り キー入力があったと認識されないので たとえば"a"、"b"、"c"、"d"と入力してもすぐには読み込めず この入力のあとにenterを入力して はじめて文字が読めます enterが入力されなくても、入力された文字を調べるには どうしらたよいのでしょうか?

  • C言語のfor文について

    閲覧有難うございます。さて本題ですが、以下のプログラム #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <Windows.h> #define S 500 int main(void) { unsigned char x, input; int i; for (i = 0; i < 20; i++) { x = 0x01; scanf("%#x", &input); Sleep(S); printf("%#x\n", x); } return 0; } を実行したら、一度だけキー入力をした後はキー入力の処理は飛ばされ、 最初に入力した値がi < 20までループが続くのですが・・・ 正常な動作としては キー入力  ↓ スリープ  ↓ 入力値を出力  ↓ 再びキー入力 となるはずですよね?しかし何故か2回目以降のscanf()が省略されるのは何故でしょうか? 環境はVisual C++ 2010です。

  • C言語

    WindowsのCのプログラムをLinuxで実行するとうまくいきません。どうしたいいのでしょうか?

  • C言語で、文字とか入力されなくても実行を続けたい

    現在簡単なゲームをunix系のOSのC言語でつくってますが なにも入力されなくても停止せず実行を続けられる getcharのような関数はないのでしょうか? windows系のOSにはcons.hヘッダーあたりに そんな関数あったような気がするのですが。。。 普通のgetcharだと、文字が入力されるまで(enter押されるまで) そこで実行が一時中断されてしまい リアルタイムで動くプログラムができないのですが。。。

  • C言語の質問です。

    わからない問題が三問あるので質問させてもらいました。色々やってみたんですけどわからないまま気付いたら5日たってしまって、全くらちが明かないもので…(^ω^;)プログラミングはLinuxのGNOME端末を使っています。 ■アルファベットの小文字1文字を入力し、そのアスキーコードと大文字を出力するプログラムを作成しなさい。■ 自分なりにやってみたんですが、 エラーがでまくるんでやり直してます↓ *************************** [ 実行結果 ] Input small capital r The original character is r. The ASCII Code is 114(0x72). The large capital is R. **************************** ■キーボードから慎重と体重を入力し、BMI値を計算するプログラムを作成しなさい。{BMI=体重(kg)÷(身長(m)×身長(m))}■ この問題は途中までできたんですが、 一行詰まってしまいました('A`) *************************** #include <stdio.h> int main(void){ float height, weight, bmi; printf("Input weight(kg) and height(m)\n"); scanf ("%f %f",&weight, &height); bmi = [ ココがわかりませんでした(・ω・`)] ; printf("BMI = %f \n", bmi); return 0; } ************************* ■ブランク定数とアボガドロ数を書式指定して以下のように表示するプログラムを作成せよ。■ コレは最初っからわかりませんでした(・ω・`) *************************** [ 実行結果 ] ブランク定数 0.000000 0.000000000000000000000000000000000663 6.630000e-34 6.6e-34 6.63e-34 アボガドロ数 601999999999999995805696.000000 601999999999999995805696 6.020000e+23 6.02e+23 6.02e+23 6e+23 全く進まないかもしれないけど とりあえず返事が来るまで自分でやってみますp(・∩・)q

  • C、C++

    SE未経験で勉強中です。 C、Visual studioC++、Windows 10 問題: sキーを入力してから10秒後に、 "10秒経ちました"と表示する。 for、Sleep、scanfを使用。 どのようにかいたらよいのか なんどやってもエラーは出ないものの 10秒経ったら文字が表示されることしかできず、 sキーを押してから10秒後、という処理ができません。 教えていただけたら幸いです。 #include 〈stdio.h〉 #include 〈windows.h〉 int main(void) { printf(“sキーを入力してください。”); Sleep(10000); printf(“10秒経ちました!” ); } ↑ここにどうやったらsキーを押してからこの処理を実行させるのですか?

  • C言語を使用したプログラミング方法で質問です。

    次のように数値(16進数)を入力して小さい順に並べる(scanfで入力時に数値はカンマで区切る) 例: 入力:A1,05,B1,30,29最後はenterキーで出力  出力:05,29,30,A1,B1 というように出力する方法をプログラミングを教えていただけますか? 宜しくお願いします。

  • C言語でforとSleepを使う

    SE未経験で勉強中です。 C、Visual studioC++、Windows 10 問題: sキーを入力してから10秒後に、 "10秒経ちました"と表示する。 for、Sleep、scanfを使用。 どのようにかいたらよいのか なんどやってもエラーは出ないものの 10秒経ったら文字が表示されることしかできず、 sキーを押してから10秒後、という処理ができません。 教えていただけたら幸いです。

  • C言語プログラミング

    台形の面積を求めるプログラムを作りたいのですが、最後のmensekiの出力の仕方がわかりません。printf以降のプログラムを教えてください。 #include<stdio.h> #include<conio.h> void main() { int number1,number2,number3,menseki; printf("上底を入力してください:"); scanf("%d",&number1); printf("下底を入力してください:"); scanf("%d",&number2); printf("高さを入力してください:"); scanf("%d",&number3); menseki=(number1+number2)*number3/2; printf( ここがわかりません getch(); }

  • C言語 プログラミング

    C言語、プログラミングの質問です。 構造体について、 プログラムを組んでみたのですが、上手く出力されません。実行時にはエラーはないのですが、出力時に上手くいきません。どなたかどこがおかしいかわかる方、教えていただけませんでしょうか? #include <stdio.h> struct user{ char *name; char *id; int books; }; int main (void) { struct user u; printf("氏名を入力して下さい。"); scanf("%s",u.name); printf("パスワードを入力してください。"); scanf("%s",u.id); printf("年齢を入力してください。"); scanf("%d",&u.age); printf("氏名 %s\n",u.name); printf("パスワード %s\n",u.id); printf("年齢 %d\n",u.age); return 0; } よろしくお願いします。

専門家に質問してみよう