• ベストアンサー

ファイルからの変換

c言語初心者です。 あらかじめファイルを作っておいて その中に小文字でvffjfと入れておきます。 それを読み取り大文字に変えファイルに表示させるプログラムをつくりたいのですが、 toupperの使い方や、変換させてまた再度入力させるには どのようなものが必要ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yone_sk
  • ベストアンサー率34% (58/167)
回答No.2

toupperの使い方はこれでわかりますでしょうか? ------------------------------ #include <stdio.h> #include <ctype.h> //←これ必須 int main() {  char *str = "vffjf";  char *wk;  for (wk = str; *wk; wk++) {   *wk = toupper(*wk);  }  printf("str: %s\n", str);  return 0; } ------------------------------ これで大文字に変換した文字列が取得できますので、 元のファイルに上書きしてやればOKです。

armpoint
質問者

補足

なんとなくはわかるのですが、私はこんな感じでできないんですが、 なにがだめなのか指摘していただけませんか? #include<stdio.h> #include <ctype.h> int main() { FILE *fp; char big = 0; char bit = 0; char toupper(char fp); if((fp = fopen("bigban", "r")) == NULL ) { printf("\nファイgルをオープンできません。/n"); } else { while((bit = fgetc(fp)) != EOF) big = toupper(bit); fprintf(fp,"%s",big); return 0; } fclose(fp); } この場合bigbanに小文字で英語の配列が入っていて、それをこのプログラムで大文字に書き換えようとしてるのですが、、、 まったくだめです。。。

その他の回答 (3)

回答No.4

>char toupper(char fp); まず、上記は何の為に記載されているのでしゅうか? 違うファイルに書き込んでよいと言うことであれば、私なら以下のプログラムにします。 #include <stdio.h> #include <ctype.h> int main() {  FILE *fpi,*fpo;  int cnt = 0;  char buf[1024] = "";  fpi = fopen("bigban.txt", "r");  if(fpi == NULL )  {   printf("入力ファイルをオープンできません。\n");   return 0;  }  fpo = fopen("bigban2.txt", "w");  if(fpo == NULL )  {   printf("出力ファイルをオープンできません。\n");   fclose(fpi);   return 0;  }  while(fgets(buf,1024,fpi) != NULL)  {   for(cnt = 0; buf[cnt] != '\0' ; cnt++)   {    buf[cnt] = toupper(buf[cnt]);   }   fprintf(fpo,"%s",buf);  }  fclose(fpi);  fclose(fpo); }

armpoint
質問者

お礼

ご親切にどうもありがとうございました。 なんとかやってみます。

回答No.3

>なにがだめなのか指摘していただけませんか? 個々の関数の機能を理解するところからはじめてください。 ファイルの開き方が違います。 >if((fp = fopen("bigban", "r")) == NULL ) この設定ではファイルは「読み取り専用」です。書き込むことはできません。 読み書きによる「ファイルポインタ」の位置を理解してください。 ファイルを開いた直後は、ファイルポインタは先頭(一文字目)にいます。 一文字読んだ場合、ファイルポインタは「二文字目」の位置に移動します。 この状態のファイルポインタを使用して書き込みを行えばデータは「二文字目」に書かれます。 seek()のようなファイルポインタを移動する関数を使用しで書く位置を変更する必要があります。 ところで、課題は同じファイルを更新するのでしょうか?

armpoint
質問者

補足

課題は同じファイルですよ。 個々の関数の機能いがいまいち理解できてないのでもう一度勉強してみます。

  • yone_sk
  • ベストアンサー率34% (58/167)
回答No.1

・小文字 → 大文字 変換 こちらが参考になると思います。 http://www1.cts.ne.jp/~clab/hsample/Point/Point11.html > 変換させてまた再度入力させる これはどういうことでしょうか?

armpoint
質問者

補足

もともと小文字の英語の配列があるファイルから、プログラムにより読み出してから、それを大文字に変換してファイルに大文字の英語の配列として残したいということです。 何か複雑な気がしてtoupperがうまくつかえません

関連するQ&A

  • Cファイルからアセンブリファイルへの変換について

    今、プログラム勉強として眠っていた数年前の日経ソフトウェアを読んでいますが、 その中に環境構築として「Microsoft Visual C++ Toolkit 2003」 (これを使って特定のコマンド(/FA)を叩くとでC言語ファイルからアセンブリファイルが出来るようです) が必要なものがありました。 検索をしてリンクは見つかるのですが、microsoft頁に行き「コンテンツが見つかりません」になってしまっています。 どなたかC言語ファイルを元にアセンブリ言語に変換してくれるソフトをご存知でしたら教えてください。

  • slnファイルを開くと変換ウィザードが出る

    プログラミング初心者です。 あるプログラムのプロジェクトファイル(拡張子がsln)を、リビルドする為にvisual studio2008を導入しました。 プログラム言語はC#。ファイルを開くと「このプロジェクトは旧バージョンで作成されているため、変換する必要があります...」とのエラーが出ます。 変換させる事なくこのプロジェクトファイルを開くために、visual studio2005 expresseditionを新たに導入し、開こうとしたのですが、同じメッセージ... このプロジェクトファイルがいつのバージョンのvisual studioを使い、作られたのかを知る方法はありますか?

  • 変換プログラムってどうやって作るのですか??c言語超初心者です。おねがいしますm(__)m

    大学の課題で、「カレンダのデータをiモードで見れるようにする変換プログラムを作りなさい」というのが出されたのですが、正直なんのことだかさっぱりわかりません(汗) 私なりに一生懸命考えた限りはこうです▽ ・文字コード変換プログラムをつくればいいのかな? ・もしくは、データベースをiモードでみれるようにするようにタグを付け加えていくプログラムかな? 環境はUNIXのC言語です。 c言語はまったくの初心者なので文字コード変換プログラムとかもつくれないです。どうか助けてください。

  • 別ファイルの内容を検索したいのですが、(超初心者です)

    現在、独学でC言語を勉強しているのですが、 別のファイル(.dat)にあるデータの内容を 該当するデータだけ表示させたいのですが、 どうやったらできるのかわかりません。。 例えば、、、 別ファイルの内容が、 145556 1 C言語 256885 2 C言語その1 456789 3 C言語その2     : という風になっていたとして、 プログラム実行中に 145556 と入力したら C言語 と表示されるような 行ごとに入力されたデータの最初の6桁を検索して 必要な部分だけを表示することはできるのでしょうか? もし、できるのであれば どのようにプログラムを作成すればいいのか教えてください! そして、勝手なのですが、勉強中なので  どうして そうなるのかも教えて欲しいのです。 よろしくお願いします。

  • 小文字は大文字に、大文字は小文字に変換して表示するプログラム

    C言語の問題で、ユーザが文字を入力し、CTRL+Zが押されるまで、半角英数字の入力を受け付ける。 受け付けた文字列(最大でも1000文字)を、小文字は大文字に、大文字は小文字に変換して表示するプログラムを作成する。数字に対しては何も変化させなくて良い。 けっこう考えたんですが全くわかりません。 どなたか知恵を貸してください。

  • Cについて教えてください。

    学校で 「文字列を繰り返し読み込み、英文字以外を削除し小文字を大文字に  変換して表示するプログラムを作成せよ。'!'を入力したとき終了  するようにすること。」 使う関数などについて指定はなく、第1回目の授業で説明もなく課題が 出てしまいました。他にもあるのですが、それはとりあえずできた。 教科書があるので、そちらを参考にしなさいと言うことだと思います。 教科書…ソフトバンクパブリッシング社 改訂新C言語入門-ビギナー編- 環境はUNIXです。dtpadで入力し、ccでコンパイルしています。 自分なりに考えたのは isalpha(x)を使って英文字を認識してtoupper(x)で文字の変換。 入力はcharでしているのでこれらをintに変換してxに文字コード(10進) を入力すればできるかな~と。 また、「繰り返し~」からwhile(1)で無限ループにして、if(a == '!') break で抜けて終わりかな。 と考えたのですが、うまくプログラムが立てることができず困っています。 ぜひぜひ教えて下さい。

  • toupperに関して

    C言語初心者です。 勉強のために本に書いてあるものを写しながら勉強しているのですが、 #include <stdio.h> #include <ctype.h> int main() { int c; while ((c=getchar())!=EOF){ c=toupper(c); putchar(c); } } 以上のものを写したのですが、入力した文字が小文字であろうと大文字であろうと関係なくそのまま表示されます。 どこを間違えているのでしょうか? どうぞよろしくお願いいたします。

  • 画像を二次元フーリエ変換

    c言語で画像を入力して2次元フーリエ変換を行い,逆変換をしたいのですが全然うまくいきません. どなたか教えていただけませんか? いろいろ調べたのですが,プログラム初心者なのでどう書いていけばいいのかわからず辛いです... サンプルのコードも教えていただけると助かります. 画像サイズは256×256画素程度です.

  • C言語の変換する関数について教えてください。

    キーボードからローマ字で入力された名前の英文字を変換する関数を定義し、その関数の機能を確認するプログラムを作成する問題について教えてください。 (1)英小文字であればそれを英大文字に変換する関数 (2)英大文字であればそれを英小文字に変換する関数 (3)英小文字であればそれを英大文字に、英大文字であればそれを英小文字に変換する関数 ただし、キーボードから入力された名前を格納する配列と、変換後の名前を格納する配列を別にする。 また、名前は関数main()内で表示する #include <ctype.h> #include <stdio.h> void name_toupper(char str[]) { unsigned i = 0; while (str[i]) { str[i] = toupper(str[i]); i++; } } void name_tolower(char str[]) { unsigned i = 0; while (str[i]) { str[i] = tolower(str[i]); i++; } } int main(void) { char str[100]; printf("文字"); scanf("%s", str); name_toupper(str); printf("大文字: %s\n", str); name_tolower(str); printf("小文字: %s\n", str); return 0; } 自分で作った上のプログラムではKa siと入力すると(1)ではKA、(2)ではkaと表示されsiが消えてしまいます。原因がよくわかりません。 あと(3)ができないし、ただしを満たしているのかもあいまいです。 文字列の入力の形式:char *gets(char *buffer)を用いればどうにかなるのではと思っていますがどうですか? 説明が長くなって申し訳ありませんが教えてください。 よろしくお願いします。

  • ファイルの内容を変換するインタプリタ?

    ファイルの内容を変換する簡単なプログラムを作りたいのですが、 CやVBなどコンパイル環境がありません。 何かいい方法はないでしょうか。 フリーかシェアウェアのインタプリタとか。 OSはWindwos XPです。 目的は、 htmlファイル内の料金を税込みに変換したい。 htmlファイルは1000ファイルある。 プログラムはこんな感じです。 ファイルを開く LOOP: 1文字読む。EOFならファイルを閉じる。 もし、文字が \(円マーク)なら --次の4文字を数字に変換 --数字を1.05倍する。 --ファイルに書く 違ったら --ファイルに書く goto LOOP このプログラムをさらに、UNIXみたいに、 foreach file (*) --プログラム.exe $file end のような感じにしたいのです。 どうぞよろしくお願い致します。

専門家に質問してみよう