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

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

 詳しくはこちら


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

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


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

No.23317

先ほどはすいません。 注意を読んでやってみましたが間違っていたらすいません。
投稿者---zenetomo(2005/09/26 17:58:58)


注意を読んで以下のようにしました。
あと、やりたいこととはまず一文字を入力した構造体をEntarが押されるまで入力します。
そしてそれを空き領域に入れていきます。その空き領域に入れたひとつひとつの構造体を入力された順番にcharに入れていき、構造体がnull以外ない状態、charの規定文字数に達した場合終了ということだと思うのですが。。。
よろしくお願いいたします。
<pre>&lt;pre&gt;#include &amp;lt;conio.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;ctype.h&amp;gt;

#define BUF_LEN (80)
  struct InputData {
      char Data;
      struct InputData *BackPtr;
      struct InputData *NextPtr;
  }InputData={0,0,0}; 
  struct InputBuffer {
      struct InputData *StartPtr;
      struct InputData *EndPtr;
      struct InputData Buffer[BUF_LEN];
  }*StartPtr={0},*EndPtr={0}; 
char *StrInput(char *DefaultStr, int InputLen); 
 int main()
{
 char *buf;
 buf = StrInput(&lt;font color=&quot;#0000ff&quot;&gt;&amp;quot;&amp;quot;&lt;/font&gt;,BUF_LEN);
 printf(&lt;font color=&quot;#0000ff&quot;&gt;&amp;quot;\n&amp;quot;&lt;/font&gt;);
 printf(&lt;font color=&quot;#0000ff&quot;&gt;&amp;quot;%s&amp;quot;&lt;/font&gt;, buf);
 return 0; 
} 
char *StrInput(char *DefaultStr, int InputLen)
{ 
 static char buffer[BUF_LEN+1];
 struct InputBuffer input;
 int a=0;
 int b=0;

  for(a=0; a&amp;lt;=BUF_LEN; a++){ 
    InputData.Data=getch(); 
     if(input.Buffer[a].Data==0x00){
      input.Buffer[a].Data=InputData.Data; 
      struct InputData *NextPtr;
     } 
     if(InputData.Data==0x0d){ 
      break;
     }
  }
  for(input.Buffer[0].NextPtr=input.StartPtr;;){ 
    for(b=0; b&amp;lt;=BUF_LEN+1; b++){
      for(a=0; a&amp;lt;=BUF_LEN; a++){
       buffer[b]=input.Buffer[a].Data; 
       if(input.Buffer-&amp;gt;NextPtr==0x00){ 
        break;
       }
       if(b==BUF_LEN+1){
        break; 
    } 
  }

putchar(buffer[b]); 
return &amp;amp;buffer[0];
}


&lt;/pre&gt;
</pre>



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:先ほどはすいません。 注意を読んでやってみましたが間違っていたらすいません。 23318 nop 2005/09/26 18:09:23
<子記事> 双方向リストを用いた自作関数 23319 とろり 2005/09/26 18:11:32
<子記事> Re:先ほどはすいません。 注意を読んでやってみましたが間違っていたらすいません。 23321 ぽへぇ 2005/09/26 19:54:51


No.23318

Re:先ほどはすいません。 注意を読んでやってみましたが間違っていたらすいません。
投稿者---nop(2005/09/26 18:09:23)


>やりたいこととはまず一文字を入力した構造体をEntarが押されるまで入力します。
>そしてそれを空き領域に入れていきます。その空き領域に入れたひとつひとつの構造体を入力された順番にcharに入れていき、構造体がnull以外ない状態、charの規定文字数に達した場合終了ということだと思うのですが。。。

まず、日本語がおかしいです。
それから、何故「ども様な処理を行いたいか?」がソースよりも短いのでしょうか?
あなたの中で「やるべき事」がまとまっていないのではないでしょうか?
まず、「何をやりたいか?」をじっくり考え、
他人に日本語で説明できる様にしてみて下さい。

その上で、その説明文と自分のソースを見比べてみて、
説明文と矛盾する所がないか、調べてみて下さい。


この投稿にコメントする

削除パスワード

No.23319

双方向リストを用いた自作関数
投稿者---とろり(2005/09/26 18:11:32)


ソースのHTML変換に失敗しています。
とりあえず字下げ代行だけ。

#include <conio.h>
#include <stdio.h>
#include <ctype.h>

#define BUF_LEN (80)

struct InputData {
  char Data;
  struct InputData *BackPtr;
  struct InputData *NextPtr;
}InputData={0,0,0}; 

struct InputBuffer {
  struct InputData *StartPtr;
  struct InputData *EndPtr;
  struct InputData Buffer[BUF_LEN];
}*StartPtr={0},*EndPtr={0}; 

char *StrInput(char *DefaultStr, int InputLen); 

int main()
{
  char *buf;
  buf = StrInput("",BUF_LEN);
  printf("\n");
  printf("%s", buf);
  return 0; 
}
 
char *StrInput(char *DefaultStr, int InputLen)
{ 
  static char buffer[BUF_LEN+1];
  struct InputBuffer input;
  int a=0;
  int b=0;

  for(a=0; a<=BUF_LEN; a++){ 
    InputData.Data=getch(); 
    if(input.Buffer[a].Data==0x00){
      input.Buffer[a].Data=InputData.Data; 
      struct InputData *NextPtr;
    } 
    if(InputData.Data==0x0d){ 
      break;
    }
  }

  for(input.Buffer[0].NextPtr=input.StartPtr;;){ 
    for(b=0; b<=BUF_LEN+1; b++){
      for(a=0; a<=BUF_LEN; a++){
        buffer[b]=input.Buffer[a].Data; 
        if(input.Buffer->NextPtr==0x00){ 
          break;
          if(b==BUF_LEN+1){
            break; 
          } 
        }
      } 
    }
  }
  putchar(buffer[b]); 
  return &buffer[0];
}



この投稿にコメントする

削除パスワード

No.23321

Re:先ほどはすいません。 注意を読んでやってみましたが間違っていたらすいません。
投稿者---ぽへぇ(2005/09/26 19:54:51)


>あと、やりたいこととはまず一文字を入力した構造体をEntarが
>押されるまで入力します。そしてそれを空き領域に入れていきます。
>その空き領域に入れたひとつひとつの構造体を入力された順番にcharに入れていき、
>構造体がnull以外ない状態、charの規定文字数に達した場合終了と
>いうことだと思うのですが。。。

InputData 構造体を見たところ、この構造体1個が一文字に対応するように
見えますが、そうしたいのですか?

双方向リストにする理由は何ですか?
(文字の挿入/削除を考えているのだろうと予想していますが)



この投稿にコメントする

削除パスワード

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