ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

C言語とC++言語コミュのこれの修正個所を教えてください。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
以下のような問題に対し、作成したのですが、テキストに反映されません。
修正個所を教えてください。
以下が問題です。

シーザー暗号を用いて、入力された文字列を暗号化するプロ
グラムを作成せよ。(シーザー暗号については次項に説明が
ある)尚、入力される文字列の上限は10文字、’a’から’z’の
みとする。また、暗号化する入力文字列と暗号に用いる文字
のシフト数はそれぞれscanfで入力して与えるものとし、結果
は5-2-result.txtに出力せよ。
---- 出力結果--ここから---
入力文字列:abcdefghij
文字のシフト数:1
暗号文:bcdefghijk
---- 出力結果--ここまで---


#include <stdio.h>

#define caesar 255

int main(void)
{
FILE *fp; //ファイルポインタ宣言
fp = fopen("5-2-result.txt", "r");
if(fp != NULL)
{

char alphabet[caesar];
char angou[caesar];
int key, number, i;

printf("平文を入力(英小文字のみ):");
scanf("%s", alphabet);
printf("文字のシフト数を入力:");
scanf("%d", &key);

i = 0;
while(alphabet[i] != '\0'){
number = (alphabet[i] - 'a' + key) % 26;
angou[i] = 'a' + number;
++i;
}
angou[i] = '\0';

printf("暗号文:%s\n", angou);


fprintf(fp, "<HTML>\n入力文字列%s\n文字のシフト数%d\n暗号文%s\n</HTML>",alphabet,key,angou);
fclose(fp); //ファイルクローズ
}
else
{
printf("not clear\n");
}

return 0;
}

コメント(10)

なんでこういう質問をして来る人というのは、

こんなエラーメッセージが出ているんです。

みたいな詳しい説明が書けないのかねえ?
そんなだから、駄目なんだろうけど
>>[2]

いや、エラーにはならないんじゃないかな。
実行時に、not clear は出るかもしれないが。
fp = fopen("5-2-result.txt", "r");  でしょう.

ところでプログラムにコメントを入れようという努力はわかるのですが,
FILE *fp; //ファイルポインタ宣言
fclose(fp); //ファイルクローズ
って,コメントとしての意味があるのかな?
>>[3]

エラーが出ない?ホント?
まあ、もうこの主はここに興味が無いのか反応も無いが、、

にしても、なんでこんな初歩的な間違いに気づけないのか、釈明がほしいところだ。
>>[5]

少なくともコンパイルエラーは無いですよ。
1文字だけ直せばちゃんと動くし。
>>[6]
rでopenしてwrite/printfとかした時点、
さもなくば、fcloseか、絶対エラーを通知するでしょう。
>>[7]

ライブラリ関数では普通はメッセージは出しませんからね。
fprintfでエラーチェックしてないのは確かに甘いかも。

それでもfopenの戻り値はチェックしてるから、ファイルが無い状態での実行では "not clear" というのは表示されますけどね。そこで気がつけ、という感じかなあ。
回答ありがとうございます。
C++が苦手でして、対して考えもせずにここに質問してしまいました。

無事に解決しました、返事が遅れて申し訳ありません。
>>[8]

そうでした。もう、そんなことも忘れるくらいCから離れていたということか・・・
そういえば、読み取り処理で、eofかエラーかを識別するのに、ferrorを見に行かないと駄目とかあったような、、、

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

C言語とC++言語 更新情報

C言語とC++言語のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング