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

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

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

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

Q&A

解決済

3回答

5330閲覧

配列に空白を代入できません。

Teemro_431265

総合スコア29

C

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

0グッド

1クリップ

投稿2018/10/18 04:50

編集2018/10/18 06:02

while文の中でアルファベット以外なら空白を同じ場所に代入するということをやりたいのですが、' 'や" "を使ってもwarning文が出て来てしまいます。知恵袋には上記の方法で載っていたのでなぜwarningが出て来てしまうのかがわかりません。条件としてはstrcpy関数を使ってはいけないので配列に一文字ずつコピーするものを作りたいです。
warning文(ダブルクォーテーション時)
incompatible pointer to integer conversion assigning to
'char' from 'char [2]' [-Wint-conversion]
str_new[i]=" ";

warning文(シングルクォーテーション時)
empty character constant [-Winvalid-pp-token]
str_new[i]='';
^
ex0403.c:22:16: error: expected expression

c

1#include<stdio.h> 2#define N 256 3int main() 4{ 5 char str[N], str_new[N]; 6 int i; 7 8 printf("Input : "); 9 scanf("%s",str); 10 11 i = 0; 12 //printf("%c\n",str[i]); 13 while (str[i]!='\0'){ 14 if(('A'<=i && i<='Z') || ('a'<=i && i<='z')){ 15 str_new[i]=str[i]; 16 } 17 else{ 18 str_new[i]=" ";<---ここができません 19 } 20 i++; 21 //printf("a\n"); 22 } 23str_new[i]='\0'; 24 printf("Before : %s\n", str); 25 printf("After : %s\n", str_new); 26 return 0; 27}

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

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

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

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

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

mather

2018/10/18 05:54

シングルクオーテーションでもまったく同じ警告文なのですか?
Teemro_431265

2018/10/18 06:00

すみません、少し違いましたので直します。
guest

回答3

0

文字は 'a' のように、文字列は "abc" のように記述します。
str_new は文字列ですが、str_new[i] は文字なので str_new[i] = ' ' としなければいけません。

投稿2018/10/18 04:56

Zuishin

総合スコア28656

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

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

Teemro_431265

2018/10/18 05:26

見づらいと思うのですが上にシングルクォーテーションでも同じくできないと書きました。同じくwarningが出て来ます。
Zuishin

2018/10/18 05:27

できます。全角と半角を間違えていませんか? 私の回答からコピペしてください。
Zuishin

2018/10/18 05:34

もしそれでもできなければ、質問のソースをシングルクォーテーションを使ったものと差し替え、ウォーニングメッセージも質問にコピペしてください。 これらは手打ちや意訳や省略はせず、そのままコピー&ペーストしてください。
Teemro_431265

2018/10/18 07:47

おそらく全角で入れていたかもしれません、半角空白を入れたら成功しました。ありがとうございました。
guest

0

char リテラルとして正しくない、というエラーです。
半角空白文字を指定したいはずなのに文字がありません。

empty character constant [-Winvalid-pp-token] str_new[i]=''; ^ ex0403.c:22:16: error: expected expression

投稿2018/10/18 06:05

mather

総合スコア6753

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

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

Teemro_431265

2018/10/18 07:48

自分では入れていたつもりなのですが入っていませんでした、ありがとうございます。
guest

0

ベストアンサー

c

1str_new[i]=" ";<---ここができません

c

1str_new[i]=' ';

投稿2018/10/18 04:59

showkit

総合スコア1638

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

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

Teemro_431265

2018/10/18 05:25 編集

見づらいと思うのですが1行目にシングルクォーテーションでもできませんでしたと書きました。同じくwarningが出て来ます。
showkit

2018/10/18 05:33

Teemro_431265 の書いてあるソースには '' の中に、半角スペースが入っていないのですが、いれてやってみましたか?
Teemro_431265

2018/10/18 07:46

できましたぁぁぁ!!!そりゃできませんよね(笑) 完全に自分では入れた気でいました、ありがとうございます。
showkit

2018/10/18 08:19

ごめんなさい。 Teemro_431265 さんといれるつもりが「さん」をつけそこなってました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問