- ベストアンサー
C言語でプログラミング。(文字を置き換えるやり方)
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
返答がないので答えみたいなの書いちゃいます。 関数じゃないけど単純に・・・ #include <stdio.h> #include <string.h> int main(void) { char *text = "sound"; char *text2 = "souns"; char *p; printf("%s\n",text); while((p = strchr(text,'s')) != '\0') *p ='r'; printf("%s\n",text); printf("%s\n",text2); while((p = strchr(text2,'s')) != '\0') *p ='r'; printf("%s\n",text2); return 0; } で、いいんじゃない?
その他の回答 (5)
- jacta
- ベストアンサー率26% (845/3158)
> sという文字をtと言う文字に変える・・・sound→tound 全角文字に対応したいのであれば、 scanf("%ls", wcs); のようにワイド文字列として入力して処理する必要があるかと思います。 あとは、 const wchar_t *p = wcschr(wcs, L's'); if (p != NULL) *p = L't'; といった具合に置換を行います。 ちなみに、strchrもwcschrも、文字が見つからなかった場合は(ナル文字ではなく)空ポインタ定数(=NULL)を返します。
お礼
ありがとうございます。分かりやすくてためになりました!!
>>なにかヒントなどがあったらお願いします。 というわけでヒントだけにします。 1.BLUEPIXYさんのものにループをつける。 2.strchr関数は見つからなかったら'\0'を返す。 でいけると思います。
お礼
ありがとうございます!! とても参考になります。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#include <stdio.h> #include <string.h> int main(void){ char *text = "sound"; printf("%s\n",text); *strchr(text,'s')='r'; printf("%s\n",text); return 0; }
お礼
こうゆうやり方もあるんですね。 参考にさせていただきます。 ありがとうございます!!
- t_nojiri
- ベストアンサー率28% (595/2071)
fscanf()じゃなくstrcmp()とかの方が、考え方簡単ですね。 ちょっと間違えた関数を書いてしまいました。
お礼
そうだったんですか!!ありがとうございます。
- t_nojiri
- ベストアンサー率28% (595/2071)
ま、どういうアドバイスをすればいいのか分りませんが fscanf()とかで引っ掛けて、その文字列内のバッファを書き換えても良し、元のデータ壊したくないなら入力されたバッファ分mallocしてそれから書き換えても良し。(使い終わったら明示的にfree()する必要有りますが。) 好きに作ってください。但し、入力値はチェックすること(入力された文字列が、NULLポインタだったら処理しないとか)
お礼
ありがとうございます。参考にさせていただきます!!
関連するQ&A
- C言語のプログラミングについてです。
C言語のプログラミングについて教えて欲しいです。 scanf関数を用いて、キーボードから文字列(最大30文字)を読み込み、これをchar型配列に格納します。最大10個までの文字列が入力された場合か、「END」が入力された時、入力された逆順で画面に表示するプログラム。作成しなさい。 〈完成例〉 adjm 10mdjp jpd-4 njad' END njad jpd-4 10mdjp adjm
- 締切済み
- C・C++・C#
- このプログラミングの宿題を教えてください。
「アルファベット4文字を半角で文字列として入力します。4文字のコードを足しあわせ,その結果を10進数で表示します。さらに,百の位,十の位,一の位に分けて表示するようにプログラムを作りましょう。」という宿題です。 main( ) { char s[6]; printf("4文字を入力してください:"); scanf("%s",s); } ここまでできたんですが、そのあとが分かりません。 回答よろしくお願いします。
- ベストアンサー
- C・C++・C#
- プログラミングC
以下に示すプログラムは、キーボードから39文字以下の文字列を入力した後で、その文字列を表示するプログラムである。ただし、文字列の表示においては、printf命令における変換指定で、%sを使用するのが一般的であるが、以下のプログラムあえて%sを使用せずに、%cを使っている。このプログラムについてキーボードから入力される文字列の文字数が391文字以下である限り、その文字列を正しく表示できるよう、下線部を埋めてプログラムを完成させなさい。 char x[40],i printf("39文字以下の文字列を入力:"); scanf("%s",x); for(i=0;x[i]_____;i++) printf("%c",x[i]); printf("です。\n"); [実行例] 39文字以下の文字列を入力:programming 入力された文字列はprogrammingです。
- 締切済み
- C・C++・C#
- C言語のプログラミングですが、
C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…
- ベストアンサー
- C・C++・C#
- Cプログラミングについて
XP環境でVisual C++2008を使ってC言語の プログラミングをしています。 キーボードから複数回読み込み、長い文字列を作るというものです。 例) >>文字列を入力 >>abc >>今まで入力された文字列を表示 >>gsfgsdfgjfsdabc 配列、ポインタ、メモリの確保を行う事がヒントとして与えられています。 これを実現するために以下のようなプログラムを組んでみました。 int InputCount=0; char InputStr[10]; char *OutputStr[5]; int i=0; while(InputCount<5){ printf("文字列を入力してください\n"); scanf("%s",InputStr); OutputStr[InputCount]=(char*)malloc(strlen(InputStr)+1); OutputStr[InputCount]=InputStr; printf("今までに入力された文字を表示します\n"); for(i=0;i<=InputCount;i++){ printf("%s",OutputString[i]); } printf("\n"); InputCount++; } このように組んでみたのですが、うまくいきませんでした。 これでは一度入力した文字列の内容を 保持する事ができないようです。 根本的にアルゴリズムが悪いのではないかとも考えていますが、どうするのが良いのかわかりません。 初心者なので至らない点、情報不足があればご指摘願います。 これではなぜ無理なのか、またどのようなアプローチが良いのかご教授よろしくお願いします。
- ベストアンサー
- C・C++・C#
- C言語でのプログラミングについて
キーボードから入力された文字列に含まれる各文字の個数を出力するプログラムを作成せよ。 条件 ・対象とする文字は英字の小文字のみでよい ・文字列の長さは100文字まで対応できるようにせよ 例 $ ./a.out input:aaabtzz a:3 b:1 t:1 z:2 という問がわかりません。 プログラムの例(C言語)と出来れば解説もご教授ください。 ※大学で一年c言語をやった程度なので難しいことや高度なテクニックはわかりません。多少面倒でも初歩的な知識だけで理解できるようにお願いします。 #include<stdio.h>内でできるものでお願いします。 以下、自分なりに考えたものです。 #include<stdio.h> int main(void) { char a[100]; printf("input:"); scanf("%100s",a); (ここからがわかりません) return 0; } 本当に困っています。ご教授お願いします。
- 締切済み
- C・C++・C#
- C言語
(a) キーボードから入力された文字列をそのままディスプレイに表示するプログラムを作成しなさい。 という問題 #include<stdio.h> main() { char word[1000]; /*文字型の変数の宣言*/ scanf("%s", word); /*キーボードから文字列を入力*/ printf("%s\n", word); /*入力した文字列を出力*/ } と作りましたがこれではコンソール中で文字を打ってからエンターを押さないといけないからといわれ再提出になってしまいました。 エンターを押さないでそのまま出力するということは、できるのでしょうか? あと自分の作ったプログラムではスペースや改行を使うことができないから使えるようにしろと言われてましたがそれわできますか? 変換仕様をかえればいいのですか ほかにもかえる所はありますか?
- 締切済み
- C・C++・C#
- Cのプログラミングについて
入力した半角のアルファベットが大文字なら小文字で,小文字なら大文字で表示するプログラムを作り, また,半角のアルファベット以外の文字が入力された場合は,「入力エラー」と表示するプログラムを作りたいんですけど,作ってもうまく動作してくれません。簡単だとは思うんですがお願いします。
- ベストアンサー
- C・C++・C#
- プログラミング言語C 参考書
大学一年の者です。 大学の前期の授業でプログラミング言語Cの基礎を学び、 夏休みに自分なりに勉強をしようと思ったのですが どの参考書が自分に合っているのかわからず、質問いたしました。 授業で習ったこと ・四則計算 ・if while for 文 ・ソート ・関数の概念 ・ポインタの基礎 ・文字列の基礎 ・ファイルの入出力 です。 上記に関係する簡単なプログラムなら組むことができます。 ・入力した複数の数字をソートして表示する。 ・ファイルの中の小文字のアルファベットを大文字で表示する。など こんな自分に合った書籍がありましたら、アドバイスよろしくお願いいたします。 また 余談ですが 友人のプログラムは実行すると 日本語が表示されていました。 「桁数が足りていません。」「桁数が多すぎます」など これはASCIIコードか何か使用しているのでしょうか?? 長々となってしまいましたが よろしくお願いいたします。
- 締切済み
- C・C++・C#
- C言語のアルゴリズムについて
C言語で「標準入力から英語の文章を読み込んで,文字列Ilmorが出現した行をその行番号とともに表示するプログラムを作りなさい.」とプログラムを作りたいのですが、文字列を発見するところまでは分かるのですが、その行どうやって表示すればいいのか分かりません。また、文章を読み込むのもすごくややこしく最後にエンターを二回押すなどの制限があります。(scanf) 参考になるプログラムを書いていただける方いませんか?できればC言語のアルゴリズムについて詳しく書いた本やサイトがあれば教えていただきたいです。 レベルは超入門的な本を2,3冊読んだ程度です。アルゴリズムなどにはまったく触れてなかったし、ライブラリー関数も少ししか載ってなかったので関数の本もあれば教えていただきたいです。
- ベストアンサー
- C・C++・C#
お礼
ありがとうございます。 自分でもなんとか作ることができたのですが、今後の参考にさせていただきます!!