質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

5012閲覧

C言語 scanfについて

FumiakiNakao

総合スコア180

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2015/07/23 11:17

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

scanf関数は実行した時、次に来る処理が自動で改行されますが
それを改行しないようにすることはできますか?

例えば 金額(入力部分)円
これを1行にすることはできますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Unix/Linuxであれば、Enterを押さずに、Ctrl-D を2回入力してください。

そうじゃなくてEnterを押して改行させないようにするのはscanfなどでは無理なので、他の方の書いている通り、カーソル位置を動かすしか無いです。Enter入力後、カーソルを1つ上げて、1行全部上書きで表示し直すのがわかりやすいかも。

あるいは、行入力相当の機能を自作するつもりがあればなんとかなりますが、現実的ではないでしょう。

投稿2015/07/23 13:00

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FumiakiNakao

2015/07/23 15:42

Unix/Linuxではないですね(◎_◎;) おっしゃる通り、機能を自作するというのもまだまだ無理なお話です ご意見参考にさせていただきます!
guest

0

scanf文で改行してしまうのは避けられないので、
改行後にカーソル位置を動かす等の画面制御を行う必要があると思います。

このような情報は、「エスケープシーケンス」等の単語でWeb検索すると出てきますが、
環境にプログラム方法は、動作環境(OS等)にあった情報を探すと良いかと思います。

投稿2015/07/23 12:41

horohoro

総合スコア490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FumiakiNakao

2015/07/23 15:43

「エスケープシーケンス」という単語自体は聞いたことがあるのですが、いまだ理解はできていない現状です… 環境にあった方法ももう一度模索してみます ご意見ありがとうございました
guest

0

ベストアンサー

Windows限定になりますが,こんな感じでどうでしょうか.
一度「金額 円」と表示させて,
その次にキーボードからの入力を出すコンソールの位置を移動し,
その後scanfをしています.

c

1#include<stdio.h> 2#include<Windows.h> 3 4int main(void){ 5 int val; 6 int x = 5; int y = 0; 7 COORD pos = {x, y}; 8 HANDLE output; 9 10 printf("金額\t\t円"); 11 output = GetStdHandle(STD_OUTPUT_HANDLE); 12 SetConsoleCursorPosition(output, pos); 13 scanf("%d", &val); 14}

投稿2015/07/23 12:33

KenTerada

総合スコア751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FumiakiNakao

2015/07/23 15:39

windows.hというものがあるんですね 勉強不足でした… >キーボードからの入力を出すコンソールの位置を移動し なるほど!これは使えそうです!
KenTerada

2015/07/23 16:06

カーソル位置を変更する,というものは標準関数には存在しないと思うので,Windowsだけで使える関数を使いました. 逆にOSに依存しない(どのOSでも基本的に使える)関数などは標準関数と言われていて,stdio.hには標準入出力(standard I/O)に関するもの,stdlib.hには標準ライブラリに関するものが定義されています.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問