• 締切済み

文字の入れ替えについて

Prog_HIGEの回答

回答No.5

Cnetuserさんへ。 fgetsを用いてファイルから文字列を読み込み、 最初と最後の文字列を入れ替えるという作業について、回答させていただきます。 前回の回答の (1)に関して、ファイルに記述されているのは文字で、文字は1バイトのchar型データであるとします。 (2)に関して、一時保存用のchar tmpを作成します。 また、読み込み対象のファイルはCドライブにout.txtという名前で保存されている仮定し(プログラム中のC:\\out.txtに相当)、 中にはVWXYZという文字が文頭に記述されているとします。 すると以下のプログラムで目的の動作が果たせると思います。 int main( ) { FILE *fp ; char vc[ 6 ] ; char tmp ; fp = fopen( "C:\\out.txt", "r" ) ; fgets( vc, 6, fp ) ; tmp = vc[ 0 ] ; vc[ 0 ] = vc[ 4 ] ; vc[ 4 ] = tmp ; printf( "%s", vc ) ; return 0 ; } 当然ですが、このプログラムも実用性や信頼性が皆無です。 問題点の発掘、改良はご自分で行っていただけると幸いです。 以上で言葉足らずですが、回答とさせていただきます。

関連するQ&A

  • 文字列の入れ替え

    2つのchar型配列x[],y[]に格納された文字列を入れ替えるプログラムを作成せよ。ただし入替え処理には、関数swap_array(char [],char [])を作成して用いること。という問題なのですが、下記の実行例では、2つの文字列xとyをキーボードから入力し、入れ替えた後に表示している。 <実行例> % ./irekae 文字列x (20字まで)? Mojiretsu 文字列y (20字まで)? Irekae 関数swap_array()を呼び出しました 入替後の x: "Irekae" 入替後の y: "Mojiretsu" % となっているのですが文字列を格納するところまでしかわかりません。 どなたか教えていただけないでしょうか? #include<stdio.h> int main(void) { char x[21]; char y[21]; printf("文字列 (20字まで)? "); scanf("%s", x); printf("文字列 (20字まで)? "); scanf("%s", y);

  • 文字列の部分読み込み

    C言語によるプログラムを勉強中なのですが、分からないことがあるので質問させてください。 「fgets」を用いてファイルから一行分の文字列を読み込んだのですが、この文字列の○文字目から×文字目を読み込む関数などはあるのでしょうか? もし無ければ、どのようにしたら読み込めるのでしょうか? 読み込んだ文字列は □□□□1234□□□5678□□abcd のようなもので、□は半角のスペースです。 区切り文字などが無く、先頭の半角スペース部分に文字が入る場合もあるので、○文字目から×文字目のように指定したいと思っています。 初心者で申し訳ありませんが、よろしくお願いいたします。

  • cプログラミングについて

    現在c言語を勉強しているのですがどうしてもわからないので質問させてください。 キーボードから不特定多数の文字列を入力した際に、特定の文字に対してのみ特定の処理を施したい場合どうすればよいのでしょう? 例えば、 ・行の先頭の英小文字を英大文字に変換する ・\の後に入力されている数値を100倍にする などです。よろしくお願いします。

  • 文字列の最後のスペースを知るには?

    C言語初心者です。変な質問でしたらすみません。 C言語で、文字列"aaa bbbb ccc fff" という文字列があるとします。 この時fffの文字だけ取り出したいと思っています。 そこで最後のスペース(fffの前)の位置が分かれば見つける事ができると思います。 このスペースを見つけるライブラリ関数などございませんでしょうか? また、なければどうやって探したらよいか、教えていただけたら幸いです。 以上です。 よろしくお願いします。

  • 文字列

    ・文字列をキーボードから入力する関数を作成する。 書式:char *StrInp(char *pDefStr, int nLen); 引数:char *pDefStf; 初期文字列 int nLen; 入力可能文字数(1~79) 戻り値:正常ならば、入力した文字列の先頭ポインタ、エラー時はNULL。 処理:pDefStrに与えた文字列を初期値とする文字入力を行う。    nLenで指定した文字数まで入力可能とし、その範囲は1~79    までする。入力時の初期カーソル位置は与えた文字列の最後    になります。初期文字列が必要ない場合はヌル文字を与えます。    初期文字列を与えられた場合は、その文字列も更新可能とする。   ・入力の終了は「リターン」キーとする。   ・「BS」キーを押すと、カーソルの1文字前の文字前の文字を    消去する。 という、問いです。難しくてわかりません。どなたかたすけてください。        

  • 大文字の文字列→小文字の文字列

    C言語初心者です。 ある演習問題をやっていて詰まっています。 自分で入力した大文字の文字列を小文字にするプログラムを作るという問題なのですが、↓の条件があり、こんがらがってしまいました。 ・入力した文字列に小文字が含まれていたら、エラーと表示して再び入力を促し、0を入力するとプログラム終了という流れにする。 ・ポインタ変数を使う。 ・continue文を使う。 ・標準ライブラリ関数は使わない。 です。 ・continue文というのがよくわからない。 ・宣言した関数でどの処理をすればいいのかわからない。 ・大文字を小文字にするというプログラムがわからない。 (アスキーコードをどう使うのか) でつまっています。 どなたかアドバイス・解説・模範解答・指摘などしていただけないでしょうか。 よろしくお願い致します。

  • C言語で全角文字を扱いたいのですが、

    C言語で全角文字を扱いたいのですが、 全角文字列を入力して特定の箇所の文字(例えば3文字目)を抜き出して、表示するという感じのプログラムをしたいのですが、うまくいきません。 半角文字ならば、配列を使ってできるのですが・・・・・

  • エクセルの文字入力について

    ・HPのある1行をコピーしてエクセルのA列の1行目に貼り付けると、先頭が2字分くらいスペースをとった状態ではりついてしまいます。 先頭へきちんとはりつけるにはどうすればいいでしょう? 尚、このときに文字薄いブルー色になります。元の色(HP上で)は黒だったのですが。どうして? 次にA列2行目から新しく文字入力をすると、1行目と同じ状態になってしまいます。 貼り付けた文字もあららしく入力した文字も揃えるにはどうすればよいのでしょう。初心者でよろしくお願いします。 エクセルは2003だと思います。xp使用です。

  • C言語での文字列より値を抜き出す

    C言語初心者です。 たとえば、”ABCDE”という文字列があります。 その文字列の2桁目から3文字を取得したい場合、 どのようにすればよろしいでしょうか。  上記の場合、”BCD”が欲しい SQLだと、SUBSTR(B)関数がありますが、C言語には 同様な関数があるのでしょうか。 また、C++ではどうでしょうか。 お客さんに突然聞かれたので、本屋に行く余裕もありませんでした。 どなかた教えてください。お願いします。

  • 文字列で条件分岐 if swtich

    C言語でifやswitch文の条件式でキーボード入力からの複数文字列(char型)に対して条件分岐をしたいのですが、どなたか具体例を教えていただけないでしょうか?またscanfでキーボード入力を読み込む場合、Enterを押さないと実行されませんが、Enterを押さないでもいい関数や方法があれば教えて下さい。宜しくお願いします。