C言語標準入力でquitを入力で終わるプログラムを作っているのですが
うまくいきません
#include <stdio.h>
int main(void) {
int i, n;
double data[100];
printf("数字を入力してください。\n");
printf("入力を終えるときにはCtrl-dを押してください。\n");
n = 0;
while (scanf("%lf", &data[n]) != EOF) {
n++;
}
for (i=0; i<n; i++) {
printf("data[%d] = %f\n", i, data[i]);
}
return (0);
}
と今はとりあえづ作ってみたのですが
今のままではCtrl-dでループから抜ける形になっています
strcmp関数を使うとは思うのですが
strcmp関数はchar型なのでエラーが出てしまいます;
このやり方じゃないchar型にしてやり直さないといけないでしょうか;
Linux CentOS gcc
でやっています
標準入力で数字を入力しそれを格納
quitを入力するまで繰り返す
quitを入力で終了、これまで格納していた文字列の表示
簡単なプログラムの流れとしては上記の感じです
よろしくお願いします。
A 回答 (13件中11~13件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
"quit"を受け取る場所がないので、今のままではどうにもなりませんね。
scanf()で一度文字列として受け取り、"quit"でない場合はsscanf()で値として取り込む。
ってところでしょうかね。
"quit"のみなのか、"Quit"とか"quit."とか許容するかでいろいろ変わりますけど。
>quitを入力で終了、これまで格納していた文字列の表示
「文字列」ではなく「値」の表示になっていますがそこらヘンはOKですか?
No.2
- 回答日時:
考え方としては、文字入力のところをすべて、charの配列に入力するようにして、
"quit"でなければ、atof関数でdouble型に変換するという方法にプログラムを
書き換えてください。
No.1
- 回答日時:
>strcmp関数を使うとは思う
たぶん、そうでしょうね。
>strcmp関数はchar型なのでエラーが出てしまいます
どこがchar型であると思われていますか?
また、エラーが出る、とは、
どんなコードを書いて
何をしたときに
どんなエラーが出るのですか?
そこを具体的に説明しないと、
ここにいる人たちは超能力者ではありませんので、
質問者さんの状況は何もわかりません。
そうですよね;すいません;
色々わからなかったので
はじめっからやり直してみました;
#include <stdio.h>
#include <string.h>
int main(void)
{
int i,n,quit;
char str[10][10];
printf("プログラムを終了するにはquitを入力してください\n");
n = 0;
do
{
while(scanf("%s",str[n]));
if(!(quit=strcmp(str,"quit\n") == 0 || n == 10))
{
n++;
}
for(i=0;i<n;i++)
{
printf("str[%s] = %s\n",i,str[i]);
}
return 0;
}
gccでのコンファイル時のエラー↓
#ファイル名#:15:警告:passing argument 1 of 'strcmp' from incompatible pointer type
/usr/include/string.h:143: note: expwcted 'const char *' but argment is of type 'char (*)[10]'
#ファイル名#:24: error: expected 'while' at end of input
#ファイル名#:24: error: expected declaration or statement at end of input
こんな感じになってしまいました;
C言語は今月入って初めてやるので本当に意味が…
すいません;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
scanf が無視されます
-
数字以外が入力されたらエラー...
-
C言語でつるかめ算をするにはど...
-
キー入力制限について
-
enterでループ終了
-
無限ループを抜け出す方法を教...
-
if文の条件にscanf関数を使うと…?
-
ワードで文字を入力する時の変...
-
c言語応用で血液型判定プログ...
-
コンボボックスで日本語入力を...
-
コンソールアプリの入力時に改...
-
C++ scanfで止まらない
-
実行結果の順番がおかしいんで...
-
EXCEL VBA での、正規表現のパ...
-
コマンドプロンプトからのEOFの...
-
java初心者です。入力されたの...
-
C言語でgetchar();が上手く使え...
-
プログラミングC言語について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
プログラミングの問題です 「金...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
小数か整数かを判定する方法
-
cout関数を使っているのですが...
-
double型が正常に認識されてい...
-
scanfが2回使えない・・・?;
-
C言語でgetchar();が上手く使え...
-
WindowsでEOF
おすすめ情報