2011-09-13 25 views
0

はarray..Iに保存されますthat-を行う方法見当もつかない(私はいくつかのCの本を読んで) すべてのヘルプはできるでしょう 私がこれまでに試したこと:文字列配列の挿入問題

int choice; 
    printf("enter the number of the strings: "); 
    scanf("%d",&choice); 
char **str=(char **)malloc(100); 
    int i; 



    for(i=0;i<choice;i++) 
    { 
     printf("enter %dth element ",i+1); 
      str[i]=(char *)malloc(10); 
     scanf("%s",str[i]); 
    } 
    printf("%s",str[0]); 
+3

あなたはもっと読む必要があります。これは非常に基本的なものであり、基本的なスキルでそれを可能にします。 –

+0

はいそれはすべきです!問題はプログラムが終了していることです! –

+2

私はそれが終わることを望むべきです!私は終了すると予想しているプログラムを実行することは嫌い、それは永遠に続く。 –

答えて

1
You will have to allocate and initialize space for each string before reading them in. If you know he length of your input string then malloc/calloc that much space else guess a size but that would be wastage of space. 

for(i=0;i<choice;i++) 
    { 
     printf("enter %dth element ",i+1); 
     str[i] = malloc(sizeof(char)*length); 
     memset(str[i],0,length); 
     scanf("%s",str[i]); 
    } 
+0

うん動的割り振りは行く方法です。しかし、通常、このような入力をしているときは、文字列のサイズがわからないので、大きなバッファが使用され、コピーされ、フラッシュされます。 –

+0

str [i] = malloc(sizeof(char)* length); この行は機能しません!とにかく私は解決した –

+0

!ありがとう –

1

あなたは文字列にスペースを割り当てていません。有界配列でOKならば、strをchar str[100][128]と定義して100文字までの文字列を最大128文字にすることができます。少なくとも基本的な動的割り当てを学ぶまで。

+0

私は動的割り当てを知っています - 私はそれを行うことができます –

0

これを正しく読んでいる場合は、100文字の配列へのポインタを定義しています。あなたが本当に望むのは、長さ100の文字の「選択」配列です。char str[choice][100]

文字列の読み込みと印刷のために配列を使用できます。