【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


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

No.18627

ファイルの入出力
投稿者---ggln(2004/12/11 16:22:46)


Microsoft Visual C++を使ってます。
fgets関数を使ってテキストファイルから文字列を配列に格納するんですが、テキストファイルには英語の文字列と数字があるんですが、格納した配列から文字列だけ取り出したいんですがどうしたらいいんでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルの入出力 18628 monkey 2004/12/11 18:02:45
<子記事> 文字列のアルファベットのみのコピー <was: Re:ファイルの入出力> 18629 RiSK 2004/12/11 23:12:45


No.18628

Re:ファイルの入出力
投稿者---monkey(2004/12/11 18:02:45)


半角英字だけの文字列ならば、標準関数のisalphaを使って調べてはいかがでしょうか。


この投稿にコメントする

削除パスワード

No.18629

文字列のアルファベットのみのコピー <was: Re:ファイルの入出力>
投稿者---RiSK(2004/12/11 23:12:45)


サンプルコードです。
↓はgglnさんが知りたいことでしょうか?
#include <ctype.h>
#include <stdio.h>

#if 1  // 1 の時,ポインタ Ver.  0 の時,擬似配列 Ver.

// ポインタ Ver.
void CopyAlpha(char *src, char *dst)
{
    while (*src) {
        if (isalpha(*src)) {
            *dst++ = *src;
        }
        ++src;
    }
    *dst = *src;
}

#else

// 擬似配列 Ver.
void CopyAlpha(char *src, char *dst)
{
    int i, j = 0;

    for (i = 0; src[i] != '\0'; ++i) {
        if (isalpha(src[i])) {
            dst[j] = src[i];
            ++j;
        }
    }
    dst[j] = '\0';
}

#endif

int main(void)
{
    char str[] = "Abc 123 d4e5f6 G7";
    char alpha[sizeof(str)];
    CopyAlpha(str, alpha);

    printf("\"%s\"\n", str);
    printf("\"%s\"\n", alpha);

    return 0;
}

# 最近,ポインタを直接いじるのがマイブーム。
# K&R の(悪い?)影響です。


この投稿にコメントする

削除パスワード

No.18630

文字列から数字を削除
投稿者---monkey(2004/12/11 23:58:23)


文字列から数字を削除するという発想はいかが。

#include <ctype.h>

void remove_digits( char* s )
{
    for( ; !isdigit( *s ) && *s != '\0'; s++ ){
        ;
    }
    if( *s != '\0' ){
        char* p;
        for( p = s++; *s != '\0'; s++ ){
            if( !isdigit( *s ) ){
                *p++ = *s;
            }
        }
        *p = '\0';
    }
}

#include <stdio.h>

int main( void )
{
    char str[] = "a0b1c2d3e4f5g6";
    printf( "before : %s\n", str );

    remove_digits( str );
    printf( "after  : %s\n", str );

    return 0;
}



この投稿にコメントする

削除パスワード

No.18635

Re:文字列から数字を削除
投稿者---ggln(2004/12/12 11:05:40)


参考になりました。
皆さんありがとうございます。


この投稿にコメントする

削除パスワード

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