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模板!上面是动态开辟二维数组的方式,你参考一下吧