請問在C語言中如何動態創建一個指針數組??謝謝
6 个解决方案
找了個例子:
char **ppText = NULL; // 二維動態數組指針 !!!!!
char *pCurrText = NULL; // 指向當前輸入字符串的指針
ULONG ulCurrLines = 0;
ULONG ulAllocedLines = 0;
while (p = getline(pFile))
{
if (ulCurrLines >= ulAllocedLines)
{
// * 當前豎向空間已經不夠了,通過realloc對其進行擴展。
ulAllocedLines += 50; // 每次擴展50行。
ppText = realloc (ppText, ulAllocedLines * (char *));
if (NULL == ppText)
{
return; // 內存分配失敗,返回
}
}
ppText[ulCurrLines++] = p; // 橫向“擴展”,指向不定長字符串
...
我想做一個對字符串進行quicksort排序的程序,不過不知道怎么對二維數組進行動態分配,下面是我的程序代碼,請幫我看看,謝謝
#include <iostream.h>
#include <string.h>
void quicksort1(char*p[],int count);
void main()
{
int n=0;
char **p=NULL;
cout<<"輸入字符串數組的個數:"<<endl;
cin>>n;
p=new char *[n]; //動態分配行
cout<<"輸入具體數據:"<<endl;
for(int k=0;k<n;k++)
{
p[k]=new char[20]; //這里如何對列進行動態分配??
cin>>p[k];
cout<<endl;
}
quicksort1(p,n-1);
cout<<"輸出排序后的數據:"<<endl; //輸出排序后的數據
for(int j=0;j<n;j++)
{
cout<<p[j];
}
}
void quicksort(char *p[],int left,int right) //對字符串進行quicksort排序
{
char *x;
x=p[(left+right)/2];
char *t;
int i=left,j=right;
while(i<=j)
{
while(strcmp(p[i],x)<0 &&i<right)i++;
while(strcmp(p[j],x)>0 && j>left)j--;
if(i<=j)
{
t=p[i];
p[i]=p[j];
p[j]=t;
i++;
j--;
}
}
if(j>left) quicksort( p,left,j);
if(i<right) quicksort( p, i,right);
}
void quicksort1(char *p[],int count)
{
quicksort(p,0,count-1);
}
不好意思,我是想,當用戶輸入多少個字符,就自動讀出該字符串的大小,然后相應的分配空間,但我用二維指針只能實現行的動態,不能實現列的動態,如程序中的注釋部分.請大哥幫幫忙,謝謝!
先預分配,大小為size,如果超過了再重新分配2*size,依次類推。