2016-10-27 9 views
-1

この最初のコードは3つの文字列をスキャンし、文字列をもう一度出力します。最初のコードはうまく動作し、最初の画像リンクで見られるように文字列を出力します。文字列をスキャンしてプリントする

2番目のコードでは、文字列の量は可変でなければなりません。したがって、私は整数kをスキャンし、この整数をforループに入れます。私は2をスキャンすると同じ結果になることが期待されますが、同じ効果はありません。代わりに、2つの文字列をスキャンし、文字列を出力する前にいくつかの記号を出力します(2番目のイメージリンクで見られるように)。誰にもこれについての説明がありますか?

enter image description here

#include <stdio.h> 
#include <stdlib.h> 
#define maxstring 100 
#define maxc 10 

int main() 
{ 
char c, text[maxc][maxstring]; 
int i, j, n, k; 

for(j=0; j<=2; j++) 
{ 
    for(i=0; (c=getchar())!='\n'; i++) 
    { 
     text[j][i]=c; 
    } 
} 
n=i; 
    for(j=0; j<=2; j++) 
{ 
    for(i=0; i<n; i++) 
    { 
     putchar(text[j][i]); 
    } 


} 

    return 0; 
} 

第コード:

#include <stdio.h> 
#include <stdlib.h> 
#define maxstring 100 
#define maxc 10 

int main() 
{ 
char c, text[maxc][maxstring]; 
int i, j, n, k; 

printf("Enter amount of strings:"); 
scanf("%d", &k); 

for(j=0; j<=k; j++) 
{ 
    for(i=0; (c=getchar())!='\n'; i++) 
    { 
     text[j][i]=c; 
    } 
} 
n=i; 
    for(j=0; j<=k; j++) 
{ 
    for(i=0; i<n; i++) 
    { 
     putchar(text[j][i]); 
    } 


} 

    return 0; 
} 

enter image description here

+0

'c'は' int'でなければなりません。 2番目のコードの – pmg

+0

出力は、最初のコードの上の画像リンクにあります。第1コードの出力画像リンクは第2コードの下にある。申し訳ありませんが.. – FCTfct

答えて

1

第2のプログラムは、空の文字列として解釈し、最初の文字列の先頭としてkに入るの改行を読み出し。 textを初期化しておらず、すべての文字列が同じ長さであると仮定したため、ゴミが印刷されます。

また、ループはk +1文字列で読み込まれます。それがあなたが望むかどうかわからない。

-1

さて、最初のコードは最初の文字列の長さ(2番目のコードのようなもの)を見て、他の文字列は同じ長さであることが分かります。しかし、2番目のコードで文字列(k)の量をスキャンすると、別の結果が得られるのはなぜですか?私は、コードがスキャンする文字列の量だけを調べることを期待しています。

+0

これは、可能な方法では、答えです。 –

関連する問題