• ベストアンサー

C言語の問題

ある特定の1文字のアルファベッドだけ,コード変換を行って別の文字を出力させる用に先頭で宣言したいのですが,やり方を教えて下さい.

noname#4509
noname#4509

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

小文字の f を 大文字の F に置き換える char buf[80] = "abcdefg"; #define TAG_CHAR 'f' #define REP_CHAR 'F' for (char* pbuf = buf; *pbuf; pbuf++) if (*pbuf == TAG_CHAR) *pbuf = REP_CHAR; 置換前と置換後の文字数が同じ場合はこれでできます。 \n を \r\n にしたいときなどは別のバッファにコピーしながらやらないと、基本的には無理です。

関連するQ&A

  • C言語 この問題が分かりません!教えてください!

    1.文字をキーボードから入力し、該当するASCIIコードを8進数、10進数、 16進数で出力する。 (printf ,scanfを使用) 2.文字コード(ASCII)を10進数で入力し、そのコードにあてはまる文字を出力。(printf scanf) 1と2は問題は全く別です。 よろしくお願いします。

  • C言語

    (a) キーボードから入力された文字列をそのままディスプレイに表示するプログラムを作成しなさい。 という問題 #include<stdio.h> main() { char word[1000]; /*文字型の変数の宣言*/ scanf("%s", word); /*キーボードから文字列を入力*/ printf("%s\n", word); /*入力した文字列を出力*/ } と作りましたがこれではコンソール中で文字を打ってからエンターを押さないといけないからといわれ再提出になってしまいました。 エンターを押さないでそのまま出力するということは、できるのでしょうか? あと自分の作ったプログラムではスペースや改行を使うことができないから使えるようにしろと言われてましたがそれわできますか? 変換仕様をかえればいいのですか ほかにもかえる所はありますか?

  • C言語で16進数の文字コードを文字列に変換

    16進の文字コードを入力してそれに対応する文字列を出力したいのですが 文字列から16進コードに変換出来ても16進コードから文字列に変換することが出来ません。 参考になるコードかサイト、または何かヒントがございましたらよろしくお願い致します。

  • c言語プログラミングHELP!

    c言語でプログラムを組んでるんですが、どうしてもわからないものがありまして、 まず一つ目がキーボードから英小文字を一つ入力し、その文字を大文字に変換して出力するプログラミングです。結果がまずひとつの英小文字を入力して、入力した文字と、大文字に変換した文字を出力するプログラミングです。 ちなみにヒントは'a'=97,'A'=65です 二つ目が二桁の16進数('41'から'49','50'から'59')を入力すると対応する文字を表示するプログラミングです。また、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒントは入力は一つの数値か、二つの文字か?だそうです。) 結果は二桁の16進数('41'から'49','50'から'59')を入力して、文字コードの二桁の数字と文字を出力するプログラミングです。 お願いします。

  • C言語の穴埋め問題です

    次のプログラムは、初期化により文字列を定義し、辞書式配列にしたとき、どの文字列が先頭にくるかを調べるプログラムなのですが。■■■を教えてください #include <stdio.h> #include <string.h> #define N 5 //関数のプロトタイプ宣言 char *min(char *p[] , int n); int main(void) { char *p[N] = {"Hello" , "Hi" , "Happy" , "HaHaHa" , "Heaven"}; printf("辞書式配列で先頭となる文字列は%s\n" , ■■■); } char *min(char *p[] , int n) { int min; //最小値のアドレス Int i; //カウンタ min = 0; for(i = 1; i < n; i++){ if (strcmp(■■■ , ■■■) > 0){ ■■■= ■■■; } } return ■■■; }

  • C言語について

    今、大学の授業でやさしいC第3版という本をつかってC言語の勉強していてわからない問題が出てきたので質問させてください。 問題9 Char型の変数ChとInt型の変数nを宣言し アルファベットの大文字1文字と 整数1つを入力させて 次の2つの事を実行する実行ファイルを作成せよ。 1.その文字を表示する。 2.文字コードを使ってその文字をn文字シフト させた文字を表示する。 Q: Zを1文字シフトさせた時Aが出力されるようにするには どうしたらよいか?アスキーコード表をにらんで考えよ。 問題10 キーボードから身長と体重を入力させて BMIを計算して表示する実行ファイルを 作成せよ。 BMI(Body Mass Index)とは 身長と体重から求める体格指数の1つで 身長 H (m)、体重 W (kg) の時 BMI=W/H2 で求められる。 これはまだ最初の方で第3章から第5章までのところをやっています。

  • C言語の連結について

    C言語で文字列を文字列の後ろに連結させるのはstrcat()関数で出来ますが,int型で宣言した変数はどのようにして連結させればよいでしょうか?? 1回文字列に変換してから連結させる方法しかないのでしょうか??

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

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

  • C言語で文字列の出力の問題

    1行目に文字列aを出力し、2行目にaの各文字を2回づつ出力し、3行目にaの格文字の文字コードを出力する関数 void print_string(char a[]) を作成せよ。 この関数を print_string("abcd") で呼び出したときの出力は abcd aabbccdd 97 98 99 100 となる。 という問題なのですが、2行目と3行目をどうしたら文字列aの文字や文字コードを個別に出力できるのかわかりません。 1行目までしかできてないですが、次のが私の作ったプログラムです。 #include <stdio.h> void print_string(char a[]) { printf("%s\n",a); } int main (void) { print_string("abcd"); return(0); } よろしくお願いします。

  • C言語

    以下のC言語のプログラムを教えてください。 お願いします。 (1)標準入力から文字列(2 文字以上)を入力し,文字数を計上すると共に,入力された文字列の逆順に入れ替える処理を実現してください.なお,以下の要件を満たしたプログラムを作成してください. ・ 入力された文字列は,char 型の配列(要素数50)で受け取ること ・ 文字数を計上するcount 関数(引数:配列のアドレス,戻り値:文字数)を定義 し,main 関数より呼び出すこと ・ 文字列を逆順に入れ替えるreverse 関数(引数:配列のアドレス,戻り値:無し) を定義し,main 関数より呼び出すこと ・ 標準出力の処理は,main 関数で記述すること 【プロトタイプ宣言】 int count(char *str); void reverse(char *str); 【実行結果】 文字列を入力してください(2 文字以上) apple 文字数 = 5 入れ換え前 apple 入れ換え後 elppa (2)char 型の配列(要素数50)を2 つ宣言し,標準入力から2 つの文字列を入力してください.そして,格納した字列を入れ替える関数(swapstr 関数)を作成し,入れ替え前と入れ替え後の配列内の値(文字列)を配列名とともに標準出力するプログラムを作成してください. 【プロトタイプ宣言】 void swapstr(char *str1, char *str2); 【実行結果】 2 つの文字列を入力してください apple strawberry 入れ換え前 配列str1 = apple 配列str2 = strawberry 入れ換え後 配列str1 = strawberry 配列str2 = apple

専門家に質問してみよう