1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

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

 私は

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

掲示板1

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

No.5869

ご教授願います。
投稿者---瀬菜(2006/06/20 15:28:11)


先日はお世話になりました、あれから色々知識を増やしたつもりですがまた詰まる部分が出て来てしまいました。宜しければご教授下さいませ。

問いは、文字列と削除文字列を入力し文字列中から削除文字列を削除する。という物です。
入力はABCDEFAABCDABC
削除はABC
strcpyは使わないものとします。

現在の状況としては以下の感じです。
<pre>&lt;pre&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
void main(void)
{
   char m1[100] , m2[100] ;
   int i=0 , j=0 , n ;

   fflush(stdin) ;
   printf(&amp;quot;削除文字列(m2) ==&amp;gt; &amp;quot;) ;
   scanf(&amp;quot;%s&amp;quot; , m2) ;

   n=strlen(m2) ;

   while(m1[i]=='\0')
   {
      if(strncmp(&amp;amp;m1[i],&amp;amp;m2[j],n)==0)
      {
         i=i+3 ;
      }
      else
      {
         m2[j]=m1[i] ;
         j++ ;
         i++ ;
      }
   }
   m2[j]='\0' ;
   printf(&amp;quot;結果文字列(m1) %s: &amp;quot; , m2) ;
   return ;
}
&lt;/pre&gt;
</pre>

自分の中ではifの辺りに問題があるのでは。と考えています。
if(strncmp(m1,m2,n)==0)
しかし↑の様にした場合はABCと結果が出てしまいます。
宜しくお願い致します


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ご教授願います。 5872 Yuki 2006/06/20 15:36:58
<子記事> Re:ご教授願います。 5875 nop 2006/06/20 16:25:47
<子記事> Re:ご教授願います。 5879 瀬菜 2006/06/20 20:04:19


No.5872

Re:ご教授願います。
投稿者---Yuki(2006/06/20 15:36:58)


>printf("結果文字列(m1) %s: " , m2) ;
>
>if(strncmp(m1,m2,n)==0)
>しかし↑の様にした場合はABCと結果が出てしまいます。

if文には関係なく、ABCと出るでしょうね。


この投稿にコメントする

削除パスワード

No.5875

Re:ご教授願います。
投稿者---nop(2006/06/20 16:25:47)


>問いは、文字列と削除文字列を入力し文字列中から削除文字列を削除する。という物です。

まず、あなた自身が上記の処理を行う場合、
どの様な手順で行うか?を詳細に日本語で説明できますか?
説明できないのであれば、まずはその手順から考えるべきです。


この投稿にコメントする

削除パスワード

No.5877

Re:ご教授願います。
投稿者---Hermit(2006/06/20 19:18:07)


それ以前に、
3回も HTML 変換してるなんて、
おちょくってるとしか思えませんが。

以前も掲示板利用したことある人なんですよね。


この投稿にコメントする

削除パスワード

No.5879

Re:ご教授願います。
投稿者---瀬菜(2006/06/20 20:04:19)


>yukiさん
返信有難う御座います。
自分なりに投稿した後も考えていたのですがm2が初期入力時のままでwhileの中身が上手く行ってないと感じました。もう暫く考えてみます。

>nopさん
m1文字列とm2削除文字列を入力
m1の指定した先頭がm2と同じであるか(今回はABCと3文字なのでstrlenで3を出しておく)

F韻犬任△譴佇源列のABCの次の文字へ
ぐ磴場合はm3に先頭1文字を移し文字列を次の文字へ

ナ源列が終わるまで◆銑い魴り返す
m3を出力する
こんな感じでしょうか・・・。

>Hermitさん
以前の投稿時はHTMLの変換がよくわからず字下げしていない常態のまま投稿してしまっていました。
今回説明を見ながら変換をしたつもりだったのですが上手くいってないようですね;
おちょくってる訳ではないです、申し訳ございません。


この投稿にコメントする

削除パスワード

No.5884

Re:ご教授願います。
投稿者---KING・王(2006/06/20 22:42:13)


丸で囲まれた数字は、機種依存のため、Webでは使用しないほうが良いでしょう!

とりあえず瀬菜さんのソースをHTML変換ツールで字下げしてみました。
#もしかしたら、少し原文と異なるかもしれませんが。。。

#include <stdio.h>
#include <string.h>

void main(void)
{
    char m1[100], m2[100] ;
    int i=0 , j=0 , n;
    
    fflush(stdin);
    printf( "削除文字列(m2) ==> " ) ;
    scanf("%s", m2) ;
    
    n=strlen(m2) ;
    
    while(m1[i]=='\0')
    {
        if(strncmp(&m1[i],&m2[j],n)==0){
            i=i+3 ;
        }
        else
        {
            m2[j]=m1[i] ;
            j++ ;
            i++ ;
        }
    }
    m2[j]='\0' ;
    printf("結果文字列(m1) %s: ", m2) ;
    return ;
}



> (6)m3を出力する
え〜と、m3が見当たりませんが?

まず、各手順がソースのどの部分かコメントを入れてみましょう。
また、変数名もm1やm2、m3なのではなく、その内容がすぐに分かるものにけましょう。
m3が見当たらない等のミスが発生するのは、変数名がその内容を表せていないからでしょう。



この投稿にコメントする

削除パスワード

No.5911

Re:ご教授願います。
投稿者---瀬菜(2006/06/21 18:25:07)


お陰様で何とか組むことが出来ました。
有難うございました。


この投稿にコメントする

削除パスワード

No.5916

Re:ご教授願います。
投稿者---asd(2006/06/22 10:01:18)


>お陰様で何とか組むことが出来ました。
>有難うございました。

結局どういう風に組んだのか全く伝わってきませんが?
#m3とか出てきてたし

最終的にどういうソースで解決したのか報告しませんか?
「できました」「動きました」だけでは情報不足です。


この投稿にコメントする

削除パスワード

No.5917

Re:ご教授願います。
投稿者---shu(2006/06/22 11:56:58)


>お陰様で何とか組むことが出来ました。
>有難うございました。

//
// おまけ
//

#include <stdio.h>

int main(void)
{
    char s[] = "ABCDEFAABCDABC", *p;
    int i;
    
    //
    for (i = 0; s[i]; i++) {
        if (strncmp(&s[i], "ABC", 3) == 0) {
            i += 2;
            continue;
        }
        putchar(s[i]);
    }
    putchar('\n');
    
    //
    for (p = s; *p; p++) {
        if (strncmp(p, "ABC", 3) == 0) {
            p += 2;
            continue;
        }
        putchar(*p);
    }
    putchar('\n');
    
    return 0;
}



この投稿にコメントする

削除パスワード

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





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