###実現したい事
C言語でchar型に格納した文字の任意の位置の文字を変更したいと考えているのですが、やはりそのためには配列を使うしかないのでしょうか?具体例を挙げると
C
1char a = 'abc', b = 'xyz';
という宣言をしたとして、変数aの2文字目(b)を変数bの2文字目(y)で置き換えるといった事は出来るのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア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総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。