配列における文字変換

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
keiji

配列における文字変換

#1

投稿記事 by keiji » 14年前

質問させてもらいます。
よろしくお願いします。

配列においてある文字列中に#が入力された場合、その文字を文字列の終わりを表す \0
に置き換えたいと思っています。

そこでなのですが、
<code>
int i;
if(buf == '#') buf = '\0';
</code>

とすると、プログラム起動中にエラーが起こってしまいます。
c言語に関して無知なため意味不明な質問をしているかもしれませんが、
よろしくお願いします。

box
記事: 2002
登録日時: 15年前

Re: 配列における文字変換

#2

投稿記事 by box » 14年前

コード全体を見せてください。
今の状態では、buf[] をどのように定義しているかなどがわかりませんので、
何とも回答できません。

なお、codeタグの使い方が正しくありません。不等号ではなく、[ と ] とで囲んでください。
プレビューしてから投稿しましょう。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

keiji

Re: 配列における文字変換

#3

投稿記事 by keiji » 14年前

申し訳ないです。
次から気をつけます。

コード:

#include<stdio.h>
#include<string.h>
#define MAXLEN 78
char buf[MAXLEN+2];

int main(void){
 while(1){
 int len,i;
 
 fgets(buf, sizeof(buf), stdin);
 if (buf[0] == '\n' || buf[0] == '0') break;
 if(buf[i] == '#') buf[i] = '\0';
 
 len = strlen(buf);
 if(buf[len - 1] == '\n') buf[len - 1] = '\0';
 printf("%s\n", buf);
 }

 return 0;
}
といったかんじです。
よろしくお願いします。

アバター
bitter_fox
記事: 607
登録日時: 15年前
住所: 大阪府

Re: 配列における文字変換

#4

投稿記事 by bitter_fox » 14年前

keiji さんが書きました:

コード:

 int len,i;

 if(buf[i] == '#') buf[i] = '\0';
変数iは初期化されていないのでbufがどこを指すかは不定となってしまいますよ。

keiji

Re: 配列における文字変換

#5

投稿記事 by keiji » 14年前

コード:

int i = 0;

for(i=0;i<MAXLEN;i++){
if(buf[i] == '#') buf[i] == '\0';
}
で解決しました。
これでもおかしいでしょうか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 配列における文字変換

#6

投稿記事 by ISLe » 14年前

strtokを使えばかなりすっきり書けると思いますけど。

閉鎖

“C言語何でも質問掲示板” へ戻る