
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
環境依存な話ですね。
残念ですが、ほとんどすべての言語で入出力まわりは環境依存になってしまうため、一概に「こうすればいいです」と言いきることはできません。OS に依存するのは当然ですし、コンパイラなどの言語システムで異なることもあるので、とてもやっかいなのです。
そもそもの話として、質問のような動作をすればなんでもあり、ということなのか、言語側で解決しないといけないなんらかの理由があるのかはっきりしていませんから、どういう解決策が所望であるのかも判断できません。
一般論として、「バックスペースで修正したい」ということは、一行入力を仮定しているわけですから、この場合、キー入力をしただけでは getchar 関数からリターンしてきません。「それは困る」ということであれば、一文字入力にデバイスを変更したうえで getchar をする必要がありますが、この場合、バックスペースに関してはシステム側でなにもしてくれないのは当たり前ですから、ご質問のような実装で動作しません。
このあたりの環境依存の部分については、複数のシステムでの経験がないとなかなか正しく理解できないところなので、どんな環境でも動作するようにプログラムを作りたい、ということであれば、かなりの上級者でなければ無理だと思います。
No.2
- 回答日時:
どういうプログラムでそうなるのか, 簡単な例は出せますでしょうか?
この回答への補足
簡単に抜粋すると以下のようなプログラムです。
環境はUNIXです。
ユーザーから入力された文字は入力された瞬間、結合されていくので
バックスペースを押しても一旦入力した文字は消えません。
とゆーかバックスペースを押すと
^H^H
とでてきます。
char str[20];
int second();
int
main()
{
second();
printf("%s\n",str);/*結合した文字列を表示*/
}
int
second(void)
{
char s;/*ユーザーからの入力値を取得する変数*/
printf( "入力してください\n");
while( s = 1 )
{
s = getchar();/*文字取得します*/
if( s == '\n')/*Enterきたら終わり*/
{
break;
}
strncat(str,&s,1);/*取得した文字を結合します。*/
}
return 0;
}
No.1
- 回答日時:
環境に依存する内容だと思いますがお使いの環境は何でしょう
Windowsのコマンドプロンプトならバックスペース使えると思います
この回答への補足
環境はUNIXです。
簡単に抜粋すると以下のようなプログラムです。
ユーザーから入力された文字は入力された瞬間、結合されていくので
バックスペースを押しても一旦入力した文字は消えません。
とゆーかバックスペースを押すと
^H^H
とでてきます。
char str[20];
int second();
int
main()
{
second();
printf("%s\n",str);/*結合した文字列を表示*/
}
int
second(void)
{
char s;/*ユーザーからの入力値を取得する変数*/
printf( "入力してください\n");
while( s = 1 )
{
s = getchar();/*文字取得します*/
if( s == '\n')/*Enterきたら終わり*/
{
break;
}
strncat(str,&s,1);/*取得した文字を結合します。*/
}
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- Mac OS MAC (Late 2020)で復元後、キーボード入力(文字)ができなくなり困っています。 1 2023/02/15 20:35
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Amazon 【至急!】 米Amazonのアカウント作成をしたので住所を登録しようと思ったのですが郵便番号の欄が入 3 2023/08/19 09:36
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
scanf が無視されます
-
[至急]Project Euler:#13Large ...
-
C言語・YesNo入力のループで解...
-
2進数の1の数を数える問題
-
c言語のプログラムで行列の積を...
-
入力候補を表示させるには・・・?
-
最大公約数と最小公倍数を求め...
-
プログラミングの問題です 「金...
-
Linuxプログラミングで、キーボ...
-
gets関数と構造体について
-
プログラム
-
プログラムの実行時に'<'でリダ...
-
実行結果の順番がおかしいんで...
-
getchar()をつける意味
-
C言語 逆ピラミッドの作り方
-
プログラミング初心者です。 Py...
-
cin.get(c)について
-
c言語でひらがなのしりとりをで...
-
Linuxで入力待ちなしkeyread関...
-
「Aに対するBの割合」と「Aに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
プログラミング初心者です。 Py...
-
C言語でgetchar();が上手く使え...
-
Excel VBAで、Application.Inpu...
-
電卓の小数点
-
cout関数を使っているのですが...
-
"scanf"でエンターで改行させな...
-
小数か整数かを判定する方法
-
至急教えてください!プログラ...
-
getchar()について 教えてくだ...
-
scanf が無視されます
-
batプログラム上で文字列を入力...
-
コマンドプロンプトからのEOFの...
-
IF文で戻ることはできますか?...
-
プログラミングの問題です 「金...
おすすめ情報