c語言動態字元串數組
① (c語言)如何將char**作為字元串數組,並且動態地添加字元串到其中
#include<stdio.h>
#include<stdlib.h>
//每行最多有多少個字元
#defineLINE_MAX_CHARS200
intmain()
{
FILE*fp;
inti=0,j;
char**lines=newchar*;
if((fp=fopen("E:/example.txt","r"))==NULL)
{
perror("Fileopenerror! ");
exit(1);
}
lines[i]=newchar;
while((fgets(lines[i],LINE_MAX_CHARS,fp))!=NULL)
{
++i;
lines[i]=newchar;
}
for(j=0;j<i;++j){
printf("%s",lines[j]);
}
return0;
}
② C語言:二維動態字元串數組問題
第一個問題:你用gets()時,在輸入倒數第二個字元串結束時是不是輸入了一個「回車」或「空格」確認輸入的內容?此時gets()將這個「回車」或空格作為你輸入的最後一個字元串賦給變數了。
第二個問題:
free()函數釋放動態分配的內存空間;
③ 如何用C語言實現動態的字元串數組
分成取數字與取非數字2個函數較簡單。get_v()取數字, get_o()取非數字。
#include <stdio.h>
char *get_v(char *a, char *b){
int i=0;
while( a[i]>='0' && a[i]<='9') {b[i]=a[i];i++;};
b[i]='\0';
strcpy(a,a+i);
return b;
}
char *get_o(char *a, char *b){
int i=0;
while( a[i]<'0' || a[i]>'9') {b[i]=a[i];i++;};
b[i]='\0';
strcpy(a,a+i);
return b;
}
int main()
{
char s[]="1234+4*5";
char b[10];
while(strlen(s)>=1){
get_v(s, b);
printf("%s\n",b);
if (strlen(s)<=0)break;
get_o(s, b);
printf("%s\n",b);
};
return 0;
}
④ 關於C語言動態數組
還是哪句話 那個問題貼裡面我說的很清楚了
如果說你要計算輸入數字的個數,用一個計數器就行了
#include<stdio.h>
int main()
{
int a = -1;
int n = 0;
printf("請輸入數字,以0結束輸入:");
scanf("%d", &a);
while(a != 0)
{
n++;
scanf("%d", &a);
fflush(stdin);
}
printf("一共輸入了%d個數\n", n);
return 0;
}
////////////////////動態分配數組空間///////////////////////////////
#include<stdio.h>
int main()
{
int n;//假設這個為你輸入的長度
scanf("%d", &n); //輸入--------------------》看這里
int *a = new int[n]; //分配一個長度為N的內存空間,吧首地址給a。
//這里的a就(可以看做)是你需要的數組了
return 0;
}
⑤ c語言中怎麼動態分配一個字元串數組
#include<stdio.h>
#include<stdlib.h>
#defineLENGTH20
intmain()
{
intstr_num;
scanf("%d",&str_num);
char(*str_arr)[LENGTH]=(char(*)[LENGTH])malloc(sizeof(char)*LENGTH*str_num);
for(inti=0;i<str_num;i++)
{
scanf("%s",str_arr[i]);
}
}
⑥ c語言字元串數組動態分配內存的問題(malloc()/calloc())
str=(char**)calloc(m,sizeof(char*));//分配m個char指針
for(inti=0;i<m;i++)
{
str[i]=calloc(1,100*sizeof(char));//為每個char指針分配100個char
}
⑦ C語言 有沒有字元串數組,就是該數組的每一項各存儲一個數組。並說明怎麼動態賦值
#include<stdio.h>
voidmain()
{
char*a[3]={"hello","","world! "};
for(inti=0;i<3;i++)printf("%s",a[i]);
a[2]="windows98 ";
for(i=0;i<3;i++)printf("%s",a[i]);
}
⑧ 在c語言中如何實現數組的動態輸入
頭文件malloc.h
使用malloc來申請一個初始地址空間。
然後在循環輸入的過程中不斷檢查初始空間是否已滿,滿了就是使用realloc來擴展地址空間。
最後,如申請的地址不需要使用了,且程序沒有結束,需要用free來釋放。
另外,使用malloc或realloc申請時,需要先判斷下返回值是否為空,如有異常申請失敗,用空指針直接使用,會造成程序錯誤。
下面簡單示範:(初始申請2個位元組,之後每次輸入字元擴展1個位元組,回車結束輸入)
#include <stdio.h>
#include <malloc.h>
int main()
{
int len=2;
char *a=NULL,*aSave=NULL,c;
a=(char*)malloc(sizeof(char)*len);
if(!a)
return 1;
a[0]=0;
while(1)
{
c=getchar();
if(c==10)
break;
if(a[0]==0)
a[0]=c,a[1]=0;
else
{
aSave=realloc(a,sizeof(char)*len);
if(!aSave)
return 1;
a=aSave;
a[len-2]=c,a[len-1]=0;
}
len++;
}
printf("輸入的字元串數組是: %s ",a);
free(a);
return 0;
}
⑨ c語言列印二維動態字元串數組
printf 後面參數,直接給變數,不要地址。
printf("a[0][1]:%c\n", &a[0][1]);這里 &a[0][1]應該寫 a[0][1]
⑩ c語言 動態字元串數組
首先你的開辟數組內存過大,建議使用鏈表進行存儲或者使用vector模板!上面是動態開辟二維數組的方式,你參考一下吧