掲示板利用宣言

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

 私は

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

掲示板2

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

No.24640

スペース=\0 ?
投稿者---johan(2005/12/09 18:13:07)


WindowsXP VS C++6.0

スペースも16進表示(20)で出力したいのですが、出力されない
うえにそれ以降の文字も出力されなくなってしまいます。
どなたかヒントだけでも教えてもらえないでしょうか?

<pre>#include &lt;stdio.h&gt;
void main(void);

void main(void){
    <font color="#009900">/*変数の宣言*/</font>
    int i;
    i=0;
    int l;
    l=0;
    int n;
    int m;
    m=0;
    char retu[256];
    scanf(<font color="#0000ff">&quot;%s&quot;</font>,&amp;retu);
    while(retu[i] != '\0'){
        printf(<font color="#0000ff">&quot;%06d &quot;</font>,l);
        for(n=0;n&lt;16;n++){
            printf(<font color="#0000ff">&quot;%x &quot;</font>,retu[i]);
            i++;
            if(retu[i]=='\0'){
                break;
            }
        }
        n=i;
        while(i%16!=0){
            printf(<font color="#0000ff">&quot;   &quot;</font>);
            i++;
        }
        i=n;
        printf(<font color="#0000ff">&quot;|&quot;</font>);
        for(n=0;m&lt;i;n++){
            printf(<font color="#0000ff">&quot;%c&quot;</font>,retu[m]);
            m++;
        }
        n=m;
        while(m%16!=0){
            printf(<font color="#0000ff">&quot; &quot;</font> );
            m++;
        }
        m=n;
        printf(<font color="#0000ff">&quot;|&quot;</font>);
        l=l+10;
        printf(<font color="#0000ff">&quot;\n&quot;</font>);
    }
}

</pre>



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:スペース=\0 ? 24641 Hermit 2005/12/09 18:22:33
<子記事> ★★★投稿の際には「確認画面」を十分ご確認ください 24642 管理人 2005/12/09 19:38:20


No.24641

Re:スペース=\0 ?
投稿者---Hermit(2005/12/09 18:22:33)


出力されないのではなくて、
入力されないだけではないでしょうか。

scanf("%s",...);
で、読み込むと、
"abcdefg hijklmn\n"
を入力された場合、最初
"abcdefg\0"
が読み込まれます。

fgets()で読み込んだほうが良いのではないでしょうか。


この投稿にコメントする

削除パスワード

No.24642

★★★投稿の際には「確認画面」を十分ご確認ください
投稿者---管理人(2005/12/09 19:38:20)


HTML変換ツールは2度押しするとうまく変換されません。
以下に正しい添付ソースを貼りなおします。

#include <stdio.h>
void main(void);

void main(void){
    /*変数の宣言*/
    int i;
    i=0;
    int l;
    l=0;
    int n;
    int m;
    m=0;
    char retu[256];
    scanf("%s",&retu);
    while(retu[i] != '\0'){
        printf("%06d ",l);
        for(n=0;n<16;n++){
            printf("%x ",retu[i]);
            i++;
            if(retu[i]=='\0'){
                break;
            }
        }
        n=i;
        while(i%16!=0){
            printf("   ");
            i++;
        }
        i=n;
        printf("|");
        for(n=0;m<i;n++){
            printf("%c",retu[m]);
            m++;
        }
        n=m;
        while(m%16!=0){
            printf(" " );
            m++;
        }
        m=n;
        printf("|");
        l=l+10;
        printf("\n");
    }
}





この投稿にコメントする

削除パスワード

No.24643

Re:★★★投稿の際には「確認画面」を十分ご確認ください
投稿者---まきじ(2005/12/10 00:32:17)


>scanf("%s",&retu);

&retu は char (*)[256] 型となります。
%s は char 型の配列の先頭要素へのポインタに読み込むので & は不要。

& を付けるなら &retu[0] とします。


この投稿にコメントする

削除パスワード

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