専門学校の課題で・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
c言語難しい

専門学校の課題で・・・

#1

投稿記事 by c言語難しい » 18年前

入力データ中の英文字(大文字、小文字)を、携帯電話の10キー入力のキー番号(押す回数は考慮しない)に置きかえて、それ以外の文字はそのまま出力するプログラムを作成せよ。文字を入れたファイルと、文字を出力するファイルを作り、2つのファイル名をコマンドライン引数に入れて実行せよ。
という問題なんですがぜんぜん中身をどう作っていいのかわかりません。教えていただければ幸いです。

今できているのは↓だけです。

#include <stdio.h>


int main(int argc, char *argv[/url])
{
FILE *fpin, *fpout;
int i=0;

if((fpi=fopen(argv[1],"r"))==NULL) {
fprintf(stderr, "入力ファイルを開けません <%s>.\n", argv[1]);
return(-1);
}

if((fpo=fopen(argv[2],"w"))==NULL) {
fprintf(stderr, "出力ファイルを開けません <%s>.\n", argv[2]);
return(-1);
}

while(argv=/0){
if(argv[i++]==a||argv[i++]==b||argv[i++]==c||argv[i++]==A||argv[i++]==B||argv[i++]==C){
fprintf("");
}
}

fclose(fpin);
fclose(fpout);
return (0);
}

ここまででも全然見当違いのことを書いていると思うのでよろしくおねがいします。

box

Re:専門学校の課題で・・・

#2

投稿記事 by box » 18年前

プログラム全体の大まかな流れは、下記のとおりです。

1)コマンドライン引数の内容に従い、入出力ファイルをオープンする。
2)入力ファイルにデータがある間、2-1)~2-3)を繰り返す。
2-1)入力ファイルから1文字読む。
2-2)その文字が英大文字または英小文字ならば、携帯電話キーボード上での
対応する数字を出力ファイルに書く。
2-3)その文字が英大文字でも英小文字でもなければ、出力ファイルに
そのまんま(東じゃないですよ)書く。
3)入出力ファイルをクローズする。

C言語の標準関数を使えば、コードが書けます。
先に挙げられたコードになかった分としては、
・入力ファイルから1文字読む(fgetc)
・英大文字または英小文字であることを判断する(isalpha)
・出力ファイルに1文字書く(fputc)
あたりです。これらについて、調べてみてください。

閉鎖

“C言語何でも質問掲示板” へ戻る