以下の問題が上手く行きません。
「キーボードから、文字列を入力し、それをファイルdata.txtに出力するプログラムを作りなさい。ただし、文字列として、qが入力された場合、キーボードからの入力、及び、データの書き込みは終了するものとする。
実行結果の例
文字列を入力してください:abc ← キーボードから入力
文字列を入力してください:cccccc ← キーボードから入力
文字列を入力してください:clanguage ← キーボードから入力
文字列を入力してください:q ← キーボードから入力
data.txtの内容
apple
car
airplane」(問題文ここまで)
Visual Studio2013で以下のプログラムを実行してみたのですが、”q”を入力してもdowhileループから抜け出せず、入力とデータ書き込みを終了できません。dowhileの条件設定かdowhileの範囲に問題があるだろうと踏んでいるのですが、私一人では実際どのように問題がおこっているのかが分かりません。どうすれば、”q”を入力してループを抜けることが出来るのかを教えて頂きたいです。
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
#define size 256
void main(){
FILE* file;
char line[256];
line[0] = '\0';
file = fopen("c:\test\data.txt","w");
if (file == NULL){
printf("ファイルが開けません\n");
exit(1);
}
do{
printf("文字列を入力してください:");
scanf("%s", line);
fprintf(file, "%s", line);
}while(line != "q");
fclose(file);
file = fopen("c:\test\data.txt","r");
if (file == NULL){
printf("ファイルが開けません\n");
exit(1);
}
while (fgets(line, size, file) != NULL){
printf("%s ",line);
}
getchar();
}
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/09 06:09