掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25377

文字列の置き換え。
投稿者---toto(2006/01/15 15:20:37)


テキストファイルを開き、アルファベット26文字・スペース・改行コードはそのままにし、それ以外の記号をスペースにしなさい。が問題なのですが、いくら検索してもスペースの文字コードが見つかりません。また、置き換えするときの条件式も分かりません。<>{}←このような記号を一つずつ条件で判断させないといけないのでしょうか?アドバイスのほうほろしくお願いします。

while( *c != '\0'&& !isalpha(c))

このような感じなのでしょうか?これに付け加えればできるのでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列の置き換え。 25379 RAPT 2006/01/15 15:47:00
<子記事> Re:文字列の置き換え。 25380 kz3 2006/01/15 15:47:30
<子記事> Re:文字列の置き換え。 25381 επιστημη 2006/01/15 15:51:32


No.25379

Re:文字列の置き換え。
投稿者---RAPT(2006/01/15 15:47:00)


> いくら検索してもスペースの文字コードが見つかりません。
コード書きゃ一発じゃん。

#include <stdio.h>
int main(void)
{
    printf("スペースの文字コード:%d\n", ' ');
    return 0;
}

でもわざわざ文字コード使わなくても、' ' って使えばいいだけでは?

> <>{}←このような記号を一つずつ条件で判断させないといけないのでしょうか?
if( !(文字がアルファベット26文字・スペース・改行コード) ){
    記号をスペース置き換え;
}
で良いんでない?



この投稿にコメントする

削除パスワード

No.25388

Re:文字列の置き換え。
投稿者---toto(2006/01/15 16:56:13)


みなさま回答ありがとうございます。以下の感じ見たくやればいいのでしょうか?


{
char* p;
for( *p != '\0'; ++p )
{
if( isalpha( *p ) )
{
if( !(文字がアルファベット26文字・スペース・改行コード) ){
*p = ' ';
++*p;
}
}
}
</pre>


この投稿にコメントする

削除パスワード

No.25389

Re:文字列の置き換え。
投稿者---Blue(2006/01/15 17:13:33)


掲示板投稿の際には
手拍子で、[確認画面へ]→[投稿する] としないで、
ちゃんと「上記のように」を確認してください。

サンプル)
#include <stdio.h>
#include <ctype.h>

int main( void )
{
    char s[] = "abc 1234 +*\n#1ABC";
    char* p;
    int i = 1;
    
    for ( p = s; *p != '\0'; p++ )
    {
        if ( isalpha( *p ) )
        {
            printf( "%d番目の文字はアルファベットです。\n", i );
        }
        else if ( *p == ' ' )
        {
            printf( "%d番目の文字はスペースです。\n", i );
        }
        else if ( *p == '\n' )
        {
            printf( "%d番目の文字は改行です。\n", i );
        }
        i++;
    }
    return 0;
}



この投稿にコメントする

削除パスワード

No.25380

Re:文字列の置き換え。
投稿者---kz3(2006/01/15 15:47:30)


> いくら検索してもスペースの文字コードが見つかりません。
printf("%x", ' ');
で簡単に調べられますよ。

>テキストファイルを開き、アルファベット26文字・スペース・改行コードはそのままにし、
> それ以外の記号をスペースにしなさい。が問題なのですが、
> <>{}←このような記号を一つずつ条件で判断させないといけないのでしょうか?
> アドバイスのほうほろしくお願いします。

この問題、アルファベットとスペースと改行コード以外をスペースに
置換となっているけれど、
タブもスペースに置換するのかな?
だったらアルファベットと改行コードだけ注目すればいいんじゃないのかな?
スペースは置換しても問題ないんだし・・・ってそう考えちゃいけないのかな?
でも余計なコード入れないで済んでバグが減るし・・・。




この投稿にコメントする

削除パスワード

No.25381

Re:文字列の置き換え。
投稿者---επιστημη(2006/01/15 15:51:32)


> いくら検索してもスペースの文字コードが見つかりません。

printf("%d", (int)' '); ってやればわかる。


> 置き換えするときの条件式も分かりません。

関数をひとつ作る。

int should_replace(char ch) {
置き換え条件を満たせば非0を返す
}

> <>{}←このような記号を一つずつ条件で判断させないといけないのでしょうか?

文字列 "!\"#$%&'()=~|][{}_?/><\.... " の中に含まれるかを調べればいいんじゃない?

>while( *c != '\0'&& !isalpha(c))
>このような感じなのでしょうか?これに付け加えればできるのでしょうか?

やってみれば?



この投稿にコメントする

削除パスワード

No.25525

Re:文字列の置き換え。
投稿者---toto(2006/01/20 23:24:52)


なんとか無事にできました。ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧