掲示板利用宣言

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

 私は

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

掲示板2

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

No.29150

先頭の0を削除
投稿者---えびす(2006/12/05 18:00:54)


お手数お掛けしますが、下記の処理で悩んでいます。

a の値が"010.0"ですと"10.0"と返ってくるのですが、
"0.0"の時に当然".0"が返って来ている状態です。
値はchar型になります。

問題を解決できる処理をご教授ください。お願いします。

char a = 000.0;
char b;

strcpy(b, a + strspn(a, "0"));




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:先頭の0を削除 29151 たかぎ 2006/12/05 19:26:25
<子記事> Re:先頭の0を削除 29157 RAPT 2006/12/06 00:17:49
<子記事> Re:先頭の0を削除 29158 えびす 2006/12/06 10:39:37


No.29151

Re:先頭の0を削除
投稿者---たかぎ(2006/12/05 19:26:25)
http://takagi.in/


>char a = 000.0;
>char b;
>
>strcpy(b, a + strspn(a, "0"));

先頭の0云々以前に、根本的に理解できていない気がします。




この投稿にコメントする

削除パスワード

No.29152

Re:先頭の0を削除
投稿者---えびす(2006/12/05 19:46:15)


>>char a = 000.0;
>>char b;

char a[5] = "000.0";
char b[5];

これで、宜しいでしょうか?
申し訳ないですが、お願いします。
根本的に問題があるようでしたら、
そこからお願いします。





この投稿にコメントする

削除パスワード

No.29155

Re:先頭の0を削除
投稿者---通りすがり(2006/12/05 21:02:36)


> char a[5] = "000.0";

ダブルクォーテーションの中は、終端の'\0'を含めて6バイトあります。
char a[] = "000.0";
と書いて、何バイトあるかをコンピュータに数えさせるか、
char a[6] = "000.0";
と書くかのどちらかです。
前者がおすすめです。

ところで、そもそも問題は何でしょうか?
No.29150で書かれていたように

> a の値が"010.0"ですと"10.0"と返ってくるのですが、
> "0.0"の時に当然".0"が返って来ている状態です。

となっている状態で、どうなってほしいのでしょうか?
投稿のタイトルでも、そのあたりが不明確です。
「先頭の0を削除」したいのか、
「先頭の0を削除」してしまうはまずいので付けておきたいのか、
どっちでしょうか?


この投稿にコメントする

削除パスワード

No.29157

Re:先頭の0を削除
投稿者---RAPT(2006/12/06 00:17:49)


他の方も書かれていますが、具体的にどんな値を投入したときにどの結果を
導出したいか、を具体例と共に記載してください。(その方が早いし正確)



この投稿にコメントする

削除パスワード

No.29158

Re:先頭の0を削除
投稿者---えびす(2006/12/06 10:39:37)


申し訳ないです。話が具体的でなかったです。
やりたい事は下記になります。

入力データ 100.0 010.0 001.0 000.1

出力データ 100.0 10.0 1.0 0.1

この様な出力がしたいのですが。お願いします。




この投稿にコメントする

削除パスワード

No.29163

Re:先頭の0を削除
投稿者---通りすがり(2006/12/06 11:43:35)


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char *src[] = { "100.0", "010.0", "001.0", "000.1" };
    char dest[20];
    int i;
    
    for (i = 0; i < sizeof(src) / sizeof(src[0]); i++) {
        sprintf(dest, "%.1f", atof(src[i]));
        printf("%s → %s\n", src[i], dest);
    }
    return 0;
}





この投稿にコメントする

削除パスワード

No.29166

Re:先頭の0を削除
投稿者---iijima(2006/12/06 12:46:38)


// 参考

#include <stdio.h>

int main( void )
{
    char* src[] = { "100.0", "010.0", "001.0", "000.1" };
    int i;
    for( i = 0; i < sizeof( src ) / sizeof( src[ 0 ] ); i++ ){
        char* p = src[ i ];
        while( p[ 0 ] == '0' && p[ 1 ] != '\0' && p[ 1 ] != '.' ){
            p++;
        }
        printf( "%s -> %s\n", src[ i ], p );
    }
    return 0;
}



この投稿にコメントする

削除パスワード

No.29174

Re:先頭の0を削除
投稿者---えびす(2006/12/06 18:32:31)


遅くなってすいません。

無事にできる事が確認できました。

ありがとうございます。


この投稿にコメントする

削除パスワード

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