掲示板ランキング  システムユーティリティ(アンインストール)


掲示板利用宣言

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

 私は

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

掲示板1

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

No.7111

文字列の検査/分解の部分を教えてください;;
投稿者---C言語初心者@@(2007/02/15 20:28:18)


A+b123Cde45というのを入力した際に
英字のみ「AbCdE」
数字のみ「12345」
という風に出力させないといけないいんですが
どうしてもうまくいきません。
教えてください。お願いします。

条件は最大80文字まで、半角文字のみしか入力できない
英字、数字がそれぞれ1文字も入力されない場合は入力され
ないと出力。

私の書いたプログラムは以下の通りです。

#include<stdio.h>
#include<ctype.h>
main()
{
char t[80],e[80],s[80];
int i,eiji=0,suuji=0,k=0,j=0;

printf("半角文字列を入力:");
scanf("%s",t);

for(i=0;t[i]!='\0';i++){
if(isalpha(t[i])){
e[k]=t[i];
eiji++;
k++;
}

else if(isdigit(t[i])){
s[j]=t[i];
suuji++;
j++;
}
}

if(eiji==0)
printf("英字は一文字も入力されませんでした\n");
else
printf("英字のみの文字列「%s」\n",e);
if(suuji==0)
printf("数字は一文字も入力されませんでした\n");
else
printf("数字のみの文字列「%s」\n",s);

}

ご指摘お願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列の検査/分解の部分を教えてください;; 7113 Hermit 2007/02/15 20:43:33


No.7113

Re:文字列の検査/分解の部分を教えてください;;
投稿者---Hermit(2007/02/15 20:43:33)


>ご指摘お願いします。

e[k] = s[j] = '\0';
を追加しましょう。
追加する位置は・・・わかりますよね!

あと、
eiji と、k
suuji と、j
同じ数値になりますよね。
何か意図があってやっているのでしょうか?


この投稿にコメントする

削除パスワード

No.7115

Re:文字列の検査/分解の部分を教えてください;;
投稿者---C言語初心者@@(2007/02/15 21:19:18)


ご指摘有難うございました^^

無事できました。

eiji,suujiはいちよ最後の検査で英字、数字が入力された
かどうかを調べるために作ったものでj,kとは関係ないです^^;

まだ初心者なものでプログラムが奇妙な部分もありますが
許してください。

本当に有難うございました^^



この投稿にコメントする

削除パスワード

No.7116

Re:文字列の検査/分解の部分を教えてください
投稿者---C言語初心者@@(2007/02/15 21:21:42)


すいません^^;

今度からはもっと分かりやすく書くようにします。

プログラムはこれからもっとうまく書けるようにします。

ご指摘有難うございます^^



この投稿にコメントする

削除パスワード

No.7117

Re:文字列の検査/分解の部分を教えてください
投稿者---RiSK(2007/02/15 21:25:50)


>今度から
>これから

「今」ここに書けば,また指摘(アドバイス)を
もらえるんだよ。フィードバック推奨。


この投稿にコメントする

削除パスワード

No.7118

Re:文字列の検査/分解の部分を教えてください
投稿者---C言語初心者@@(2007/02/15 21:42:23)


>「今」ここに書けば,また指摘(アドバイス)を
>もらえるんだよ。フィードバック推奨。

その通りですが現在C言語以外にもいろいろやることが
多くてそこまでする余裕が私の力量では現在無理なもので^^;

時間に余裕ができたらまた書き込むかもしれないのでその時
までには何とか形にできるように努力します。

アドバイスをくれた方々には感謝してます。
有難うございました^^

また聞きたいことが出てきたらその時お願いします^^



この投稿にコメントする

削除パスワード

No.7119

Re:文字列の検査/分解の部分を教えてください
投稿者---RiSK(2007/02/15 22:30:01)


>>「今」ここに書けば,また指摘(アドバイス)を
>>もらえるんだよ。フィードバック推奨。
>
>その通りですが現在C言語以外にもいろいろやることが
>多くてそこまでする余裕が私の力量では現在無理なもので^^;

「できた」コードを張る余裕がないの?
こんな文章書く時間はあるのに?
…まあ,いいか。
#include <stdio.h>
#include <ctype.h>

void Put2(const char*s, int (*is)(int))
{
    for (; *s; ++s)
    {
        if (is(*s))
        {
            putchar(*s);
        }
    }
}

void Put(const char*disp, const char*s, int (*is)(int))
{
    printf("%sのみ「", disp);
    Put2(s, is);
    puts("」");
}

int main(void)
{
    char s[81];

    if (scanf("%80s", s) != 1)
    {
        return 1;
    }
    Put("英字", s, isalpha);
    Put("数字", s, isdigit);

    return 0;
}



この投稿にコメントする

削除パスワード

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





掲示板提供:(有)リアル・インテグリティ