私の悪い英語のために申し訳ありませんが、私はあなたのための質問があります。私は、メモリを節約するために文字列へのダブルポインタの配列を持つプログラムを書いたが、私は質問がある。 colnameのcallocでポインタが正しいですか? 'frutta'では、プログラムが動作します。あなたの助けを前もってありがとう!このいや文字列へのダブルポインタの配列にメモリを割り当てる?
#include <stdio.h>
#include <stdlib.h>
void inserimento (char **, int);
void output (char **, int);
int main()
{
char **frutta;
int n,i;
printf("Quanta frutta vuoi inserire?\n");
scanf("%d",&n); //with this I write here number of elements
//(with 4 for example I write 4 fruit names)
frutta=(char **)calloc(frutta,sizeof(char*));//calloc for col. Name pointer
//here is correct?
for (i=0;i<n;i++)
frutta[i]=(char *)calloc(n,sizeof(char));//calloc for row
inserimento (frutta,n);
output (frutta,n);
for (i=0;i<n;i++)
free(frutta[i]);
free(frutta);
}
void inserimento (char **frutta, int n)
{
int i;
for (i=0;i<n;i++)
scanf("%s",frutta[i]);//here add name fruits
}
void output (char **frutta, int n)
{
int i;
for (i=0;i<n;i++)
printf("%s",frutta[i]);//here print name fruits
}
いいえ、それは正しくありませんし、あなたのコンパイラは、あなたがそれをaboit警告する必要があります。 (そうでない場合は、より良いコンパイラを入手してください)。ドキュメントを読んで、callocが意味する2つのパラメータを確認してください。 –
さらに、 'frutta [i] =(char *)calloc(n、sizeof(char))'は疑わしいです。文字列の数と各文字列の長さの間に自然なリンクはありません。 –