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

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

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

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

Q&A

解決済

2回答

3674閲覧

char型の文字の任意の位置の文字を変更したい

aiueoaiueoaiue

総合スコア94

C

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

0グッド

0クリップ

投稿2018/07/08 17:53

###実現したい事
C言語でchar型に格納した文字の任意の位置の文字を変更したいと考えているのですが、やはりそのためには配列を使うしかないのでしょうか?具体例を挙げると

C

1char a = 'abc', b = 'xyz';

という宣言をしたとして、変数aの2文字目(b)を変数bの2文字目(y)で置き換えるといった事は出来るのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

char a = 'abc', b = 'xyz';

そもそもこれはできません。
配列ではないchar型変数には1文字しか格納できません。
またC言語でシングルクォーテーションで表現されるのは文字(列ではない)です。
従って'abc'という表記自体NGです。

変数aの2文字目(b)を変数bの2文字目(y)で置き換えるといった事は出来るのでしょうか?

こんな感じになります。

c

1char a[] = "abc"; 2char b[] = "xyz"; 3 4a[1] = b[1];

投稿2018/07/09 00:33

ttyp03

総合スコア16998

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

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

0

配列を使うしかないのでしょうか?

はいそのとおりです。Cには文字列はありません。文字の配列があるだけです。
なので、char a = 'abc', b = 'xyz';は↓になります。
----->8----->8----->8----->8----->8----->8----->8----->8-----
ct.c: In function ‘main’:
ct.c:5:14: warning: multi-character character constant [-Wmultichar]
char a = 'abc', b = 'xyz';
^
ct.c:5:14: warning: overflow in implicit constant conversion [-Woverflow]
ct.c:5:25: warning: multi-character character constant [-Wmultichar]
char a = 'abc', b = 'xyz';
^
ct.c:5:25: warning: overflow in implicit constant conversion [-Woverflow]

環境:
linux mint 18.3
clang version 5.0

宣言するなら・・・
char a[] = "abc";
char b[] = "xyz";

「追記」

c

1usr~/test/c % cat ct.c 2#include <stdio.h> 3 4int main(void) 5{ 6// char a = 'abc', b = 'xyz'; 7 8 char a[] = "abc"; 9 char b[] = "xyz"; 10 11 puts(a); 12 puts(b); 13 char tmp= a[1]; 14 a[1]= b[1]; 15 b[1]= tmp; 16 puts(a); 17 puts(b); 18 19 return 0; 20} 21usr~/test/c % cc ct.c 22usr~/test/c % ./a.out 23abc 24xyz 25ayc 26xbz 27usr~/test/c % 28

投稿2018/07/08 18:29

編集2018/07/08 18:38
cateye

総合スコア6851

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問