• 締切済み

C言語でforとSleepを使う

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

noname#243128
noname#243128

みんなの回答

回答No.2

何を行ってどこまでできているのかはこちらからは窺い知れないので、コードくらい貼りましょう。 推測でしか回答できませんが、 scanfは標準入力の内容を取得する関数ですので、scanfして「s」なら今の処理に流すように判定を入れてはどうでしょうか。

  • f272
  • ベストアンサー率46% (8024/17152)
回答No.1

現状でどこまでできていて何に躓いているのかを分からせるためにも,現状のコードを開示すべきです。

関連するQ&A

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

  • c言語でエラーが出ます。

    以下のプログラムでコンパイルするとエラーが出ます。どこが間違えていますか? #include <stdio.h> int main(void) { int vx,vy; puts("二つの整数を入力して下さい。"); printf("整数vx:"); scanf("%d", &vx); printf("整数vy:"); scanf("%d", &vy); printf("vx+vy=%d\n", vx+vy); printf("vx-vy=%d\n", vx-vy); printf("vx*vy=%d\n", vx*vy); printf("vx/vy=%d\n", vx/vy); printf("vx%%vy=%d\n", vx%vy); return(0); } コンパイラーはmicrosoft visual studio 2012です。エラー表示は「error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 」と出ます。 8行目のscanfの文にエラーと出ますがどこが間違っているか分かりません。どなたか分かる方教えて頂けますか?

  • C言語のプログラミングですが、

    C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…

  • C言語の式を教えて頂きたいのですが

    「Yahoo」と入力すると、 1.「oohaY」と、逆から表示 2.文字数=5と表示 3.「YAHOO」と大文字で表示 というプログラムは、それぞれどのように書いたらいいでしょう? char moji[9]; は使うそうですが、int、for、if、putchar、getchar、printf、scanfなど、まだ基礎の基礎を習っている段階の初心者なので、できるだけ簡単にお願いします。

  • C言語

    (a) キーボードから入力された文字列をそのままディスプレイに表示するプログラムを作成しなさい。 という問題 #include<stdio.h> main() { char word[1000]; /*文字型の変数の宣言*/ scanf("%s", word); /*キーボードから文字列を入力*/ printf("%s\n", word); /*入力した文字列を出力*/ } と作りましたがこれではコンソール中で文字を打ってからエンターを押さないといけないからといわれ再提出になってしまいました。 エンターを押さないでそのまま出力するということは、できるのでしょうか? あと自分の作ったプログラムではスペースや改行を使うことができないから使えるようにしろと言われてましたがそれわできますか? 変換仕様をかえればいいのですか ほかにもかえる所はありますか?

  • C言語でプログラミング。(文字を置き換えるやり方)

    scanfなどで入力した文字列(アルファベット)の中にある特定の文字を違う文字に置き換えるようなプログラムってどのように作ったらよいのでしょうか?? 例えば、(sという文字をtと言う文字に変える・・・sound→tound)などのように、入力した文字を置き換えて、もう一度表示するようにするには、どうしたらよいのでしょうか? 関数を使ってプログラムを作りたいと思っているのですが・・・ なにかヒントなどがあったらお願いします。

  • C言語 中級編

    失礼します。現在書籍にて勉強しているのですが、エラーが出てしまい調べてみたのですが原因がわかりません。何卒よろしくお願いします。 /* 文字列として読み込んだ整数を変換して表示 */ #include <stdio.h> #include <stdlib.h> int main(void) { char temp[20]; /* 読込み用文字列 */ printf("整数を入力してください:"); scanf_s("%s", temp); printf("%dと入力しましたね。\n", atoi(temp)); return 0; } エラーメッセージ ハンドルされない例外が 0xFEFEFEFE (helloworld.exe) で発生しました: 0xC00001A5: 無効な例外ハンドラー ルーチンが検出されました。 (パラメーター: 0x00000003)。

  • C言語の課題で困っています;

    C言語の課題で困ってます; 学校の課題で、キーボードから文字を入力する(最大80文字)。入力された文字列と、入力した文字列を逆順にした文字列を表示する。(malloc,freeを使って作成して下さい) ヒントで #invlude <stdio.h> void main(void){ char *buf; //入力文字列用 char *seq; //入力文字列用コピー用 char *rev; //逆順文字列用 int lec, i; buf =(char*)malloc(81); printf("文字列を入力:"); scanf("%s"buf ); for(i = 0; buf[i] ??? '\0'; i++){ } Ien = i; /* lenに文字列の長さが入る */ seq = ???(??? + 1); /* len+1文字文確保*/ for(i = 0; ???; i++){ seq[0] = buf[0]; } free(buf); rey = ???(len + 1); for(i = 0; < len; i++){ rev[len - i - 1] = seq[i]; } ren[i] ~ '\0'; printd("入力文字列 : %s\n",sep); でたんですが、全然分からなくて足りない部分の答えを教えてもらえると助かります;