如果想将未知个数的一些数存放在一个数组中应该怎么办呢?因为C语言中数组不能这样使用:int n;scanf("%d",&n);int a[n];那如果我想将一些数(未知个的数)存放在一个数组中应该怎么办呢?老师说可以用指针,但我指针都学完了还是不知道该如果用指针将这些数存放在一个数组中(如果不用指针也行)。举个例子,假设有一个结构体:struct information{char name[10];int birthday;char telephone[15];}student[N];/*这是个结构体类型,定义一个结构体数组student[](其中N的值是不确定的或者说是可以改变的,具体值是不知道的,但我想将这N个学生的信息存放在student这个数组中,应该怎么办呢?)。*/这个例子也就和我刚开始的那个问题是一个道理,就是如何将未知个的数存放在一个数组中?请写出详细解答(代码),谢谢!
å¨Cè¯è¨ä¸æ°ç»çå®ä¹å¿ é¡»ææç»´æ°ï¼å³ä½¿æ²¡æææç»´æ°ï¼ä¹å¿ é¡»è¿è¡åå§åï¼ç¼è¯å¨éè¿åå§åå表ä¸çå ç´ ä¸ªæ°æ¥ç¡®å®æ°ç»çç»´æ°ï¼æ¯å¦ä¸é¢ç代ç ï¼
int a[] = {1,2,3};
è½ç¶æ²¡ææææ°ç»çç»´æ°ï¼ä½æ¯ç¼è¯ç¥éæ°ç»açç»´æ°æ¯3ï¼åªæä¸ä¸ªå ç´ )ã
è¦å®ç°æªç¥ä¸ªæ°çå ç´ åå¨äºæ°ç»ä¸ï¼å¯ä»¥ä½¿ç¨malloc()åfree()æ¥è¿è¡å¨æå ååé ãä¸é¢æ¯ä¸ä¸ªä½¿ç¨å¨æå åç示ä¾ï¼
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int size;
printf("è¾å ¥å»ºç«å ç´ ç个æ°:");
scanf("%d",&size);
int *p = (int *)malloc(sizeof(int) * size);
if (p == 0) {
printf("ä¸è½åé å å\n");
return 0;
}
//åå§åå å
memset(p, 0x00, sizeof(int) * size);
//éæ¾å å
free(p);
return 0;
}
如你那题。
struct information *student;
int n = 0;
scanf("%d", &n);
student = (stuct information *)malloc(n * sizeof(struct information));
这样就分配了一个可以存储n个结构体对象的空间了,把这个空间的地址存储在指针变量中。
这个空间就和数组的空间是一样的(连续n个结构体对象),所以就可以通过操纵指针来操纵空间了。
可以用student[1].name student[2].name这样的形式, 也可以用*(student + 3).name这样的形式。 可否明白。本回答被网友采纳
#include "string.h"
#include "dir.h"
void main()
{
char filename[500][60];
int i,num=0,done;
struct dfree dfree;
struct ffblk ffblk;
done = findfirst("*.txt",&ffblk,0);
while (!done)
{
strcpy(filename[num], ffblk.ff_name);
num++;
done = findnext(&ffblk);
}
for(i=0; i<num;i++)
printf("%s\n",filename[i]);
}