質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

2264閲覧

C言語における配列を用いた文字列(for文含む)

-taku-

総合スコア4

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2020/11/23 13:33

配列を用いて例えば「abcdefghijk」と入力した際に3の倍数番目の文字を「」に置き換えた、「abcdedghij」となるようなプログラムが組みたいのですが、3の倍数を「*」にする方法が思いつかないのでご共助お願いします。
実際に書いてみたプログラムは以下のようなものになりますが、まだ未完成ですのでfor文内に書く情報をご共助したく思います。
#include<stdio.h>
#define NUM 10000

int main(void)
{
char str[NUM];
int i, j;

printf("文字列を入力してください。\n"); scanf("%s", str); for (i = 0; str[i] != '\0'; i++) { } return 0;

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HogeAnimalLover

2020/11/23 13:43

例の形だと置き換えでも挿入でもないと思いますが。
-taku-

2020/11/23 13:52

間違えました。ab*de*hi*kとなるようにということです。
otn

2020/11/23 14:57 編集

↑質問文を書き直しましょう。 「3番目の文字を「*」にする」 という問題であれば、分かりますか?
-taku-

2020/11/23 14:53

本当ですね。ab*de*gh*jkですね。とりあえず、3の倍数番目が「*」になるプログラムを組みたいのです。
退会済みユーザー

退会済みユーザー

2020/11/24 02:04

インデントが崩れたりするので、質問文を編集してソースコードは「コードの挿入」で入力してください。
guest

回答3

0

難しく考えすぎなだけでは?

例えば
文字列が書かれた紙を渡されて,「3の倍数番目の文字を全部黒塗りにしろ」とか言われた場合にどうするのか? を考えてみてはどうでしょうか.

先頭から1文字ずつ数を数えながら
「1,2,3(ここを黒塗りにする), 1,2,3(ここを黒塗りにする), 1,2,3(ここを黒塗りにする), ...」
という感じに作業するのではないでしょうか.

C

1int main(void) 2{ 3 char Str[] = "abcdefghij"; //文字列が与えられた 4 char *p; 5 6 unsigned char counter = 0; 7 for( p=Str; *p!='\0'; ++p ) 8 { 9 ++counter; //1,2,3,...と数えて 10 if( counter==3 ) //3のとき 11 { 12 *p = '*'; //文字を'*'に置き換える 13 counter = 0; //次はまた 1 から数える 14 } 15 } 16 17 printf( "%s\n", Str ); 18 return 0; 19}

投稿2020/11/24 01:59

fana

総合スコア11658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

3の倍数ということは、3で割って余りが0ということです。
3,6,9の場合、それを3で割ると余りが0になります。
iは0から開始するので、iが2,5,8の時、*を設定します。
iが2,5,8であることの判定は(i+1)%3が0であるかどうかで判定できます。
(又はi%3が2であるかどうかでも同じです)

C

1#include <stdio.h> 2#define NUM 10000 3int main(void) 4{ 5 char str[NUM]; 6 int i, j; 7 8 printf("文字列を入力してください。\n"); 9 scanf("%s", str); 10 11 for (i = 0; str[i] != '\0'; i++) { 12 if ((i+1) % 3 == 0){ 13 str[i] = '*'; 14 } 15 } 16 printf("%s\n",str); 17 return 0; 18} 19

以下、実行結果
文字列を入力してください。
abcdefghij
abdegh*j

尚、ソースを提示するときは、そのまま貼り付けないで、
<code>のボタンをクリックして、ください。
そうすると、
‘‘‘ここに言語を入力
コード
‘‘‘
の文字がでるので
‘‘‘C

‘‘‘
「ここに言語を入力」の個所にC
①に個所にソースを貼り付けてください。
そうすると、インデントがきれいに整理されたソースになります。
この質問自体も、編集できるので、ぜひそのようにしてみてください。

投稿2020/11/23 23:36

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

-taku-

2020/11/24 04:34

ありがとうございます。わかりやすい指摘ありがとうございます。一番わかりやすかったので、ベストアンサーに選ばさせていただきます。
guest

0

iが3の倍数のときに*文字を代入すればいいだけです
がんばってコードを書いてみてください

投稿2020/11/23 14:15

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

-taku-

2020/11/23 14:23

回答ありがとうございます。その処理を一通り思考したう上で質問しているのですが、どうすればよろしいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問