入力データ中の英文字(大文字、小文字)を、携帯電話の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);
}
ここまででも全然見当違いのことを書いていると思うのでよろしくおねがいします。
専門学校の課題で・・・
Re:専門学校の課題で・・・
プログラム全体の大まかな流れは、下記のとおりです。
1)コマンドライン引数の内容に従い、入出力ファイルをオープンする。
2)入力ファイルにデータがある間、2-1)~2-3)を繰り返す。
2-1)入力ファイルから1文字読む。
2-2)その文字が英大文字または英小文字ならば、携帯電話キーボード上での
対応する数字を出力ファイルに書く。
2-3)その文字が英大文字でも英小文字でもなければ、出力ファイルに
そのまんま(東じゃないですよ)書く。
3)入出力ファイルをクローズする。
C言語の標準関数を使えば、コードが書けます。
先に挙げられたコードになかった分としては、
・入力ファイルから1文字読む(fgetc)
・英大文字または英小文字であることを判断する(isalpha)
・出力ファイルに1文字書く(fputc)
あたりです。これらについて、調べてみてください。
1)コマンドライン引数の内容に従い、入出力ファイルをオープンする。
2)入力ファイルにデータがある間、2-1)~2-3)を繰り返す。
2-1)入力ファイルから1文字読む。
2-2)その文字が英大文字または英小文字ならば、携帯電話キーボード上での
対応する数字を出力ファイルに書く。
2-3)その文字が英大文字でも英小文字でもなければ、出力ファイルに
そのまんま(東じゃないですよ)書く。
3)入出力ファイルをクローズする。
C言語の標準関数を使えば、コードが書けます。
先に挙げられたコードになかった分としては、
・入力ファイルから1文字読む(fgetc)
・英大文字または英小文字であることを判断する(isalpha)
・出力ファイルに1文字書く(fputc)
あたりです。これらについて、調べてみてください。