Tag: 数组

动态添加到未知大小的char数组

我目前正在进行一项任务,我必须从每个文件中一次一个字符串提取文本,然后将它们连接起来并打印出来。 我找到了一种方法来提取我的角色并将其保存在变量广告中。 如何将这些char添加到我的char数组中以打印到最后? 我最初将它malloc到一个char的大小,并在每个if语句我realloc。 我在网上找到的所有指南都建议我使用strcat,但我无法传递广告变量来追加。 我该如何解决这个问题? #include #include #include #include #include pthread_mutex_t thread1; pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; char *output; void* processing(void* file) { FILE *test = fopen(“drive1.data”, “r”); FILE *drive1 = fopen(“drive1.data”, “r”); FILE *drive2 = fopen(“drive2.data”, “r”); FILE *drive3 = fopen(“drive3.data”, “r”); FILE *drive4 = fopen(“drive4.data”, “r”); FILE *drive5 = fopen(“drive5.data”, “r”); int c, […]

C找到静态数组大小

static char* theFruit[] = { “lemon”, “orange”, “apple”, “banana” }; 通过查看这个数组,我知道大小是4。 如何以编程方式在C中查找此数组的大小? 我不希望大小以字节为单位。

地址如何具有多个值?

int i[5]={0,1,2,3,4,}; int *ip=&i[0]; printf(“%d,%d,%d,%d,%d,%d,%d,%d”,*ip,ip,&ip,&i,&i[0],i,i[0],*(&i)); 我在comp中得到的上面代码的输出是 0,2358832,2358824,2358832,2358832,2358832,0,2358832 观察到ip=&i=2358832但*ip=0且*(&i)=2358832 。 在这种情况下,一个地址如何解决2358832有两个值?

超出范围会释放(字符)数组的内存吗?

与我之前的问题非常相关,但我发现这是一个单独的问题,我无法找到一个可靠的答案。 是否超出范围释放(字符)数组使用的内存? 一个例子: void method1() { char str[10]; // manipulate str } 所以在method1调用之后,str(10字节)使用的内存是否被释放,或者我是否需要在此上显式调用free? 我的直觉告诉我这只是一个简单的原始类型数组,因此它会自动释放。 我有点怀疑,因为在C中你不能假设任何东西被自动释放。

当你声明一个“指针类型”forms(函数)参数“像一个const数组”时,const是什么?

当你声明一个“指针类型”forms(函数)参数“像一个const数组”时,const是什么? 即:如果T是类型标识符,那么是: void f(const T arr[]); 相当于: void f(const T * const arr); 要么 void f(const T * arr); 要么 void f(T * const arr); 如何解密C / C ++标准以找到这些等价物呢? 🙂 C和C ++之间以及关于上述声明含义的标准的不同化身之间是否存在差异? (对于C – ANSI C89及更高版本的标准是相关的)

C:如何确定外部数组的sizeof(array)/ sizeof(struct)?

定义类型x和该类型的数组X XH: typedef struct _x {int p, q, r;} x; extern x X[]; 单独的文件保持巨大的鸣喇叭数组X XC: #include “xh” x X[] = {/* lotsa stuff */}; 现在我想使用X : main.c中: #include “xh” int main() { int i; for (i = 0; i < sizeof(X)/sizeof(x); i++) /* error here */ invert(X[i]); return 0; } main.c不会编译; 错误是: error: invalid application […]

指向自身的整数数组的起始地址?

程序员的输出: #include int main (){ int A[3] = {1,2,3}; printf(“%u %u %u “,&A,A,*A); return 0; } 是:3216303812 3216303812 1 这里&A和A是相同的,这意味着a的地址与a的值相同,即A指向自身。 和* A表示存储在3216303812的值,我们知道A本身就是A = A ..那么1来自哪里? 怎么来* A = 1? 请帮忙

下标值既不是数组也不是指针函数错误

处理一个程序,该程序将从几个文件中读取数据,将其扫描到数组中,最终在屏幕上打印13个名称,每个名称旁边有4个数字,并在一个分级图表中输入这些数字后的字母。 但是我遇到的问题是我正在使用的其中一个函数,其目的是计算平均值。 它将一个学生测试的所有分数组合成一个值,然后将其除以4以找到平均值,然后将该平均值存储到不同数组的一个元素中。 函数调用是: avg(&scores, &average); 分数和平均值定义如下: int scores[13][4]; float average[13]; 并使用此循环填充了分数: for(i=0; i<=13; i++) { for(j=0; j<=4; j++) { fscanf(score, "%d", &scores[i][j]); } } fclose(score); 作为参考,使用的文件打开语句是: FILE *student, *score; score = fopen(“scores.dat”, “r”); 该函数本身如下所示: void avg(int *scores, float *average) { int total1 = scores[0][0] + scores[0][1] + scores[0][2] + scores[0][3]; int total2 = scores[1][0] […]

将2D数组传递给C中的函数

基本上,我有一个数据矩阵(比如说int),我想存储在一个二维数组中,直到运行时才知道维度(比如x列和y行)。 我想在函数中填充数组,所以我假设我需要做这样的事情: int main(int argc, char **argv) { int y = atoi(argv[1]); int x = atoi(argv[2]); int **matrix = malloc(x * sizeof(int*)); populateMatrix(matrix, y, x); return 0; } void populateMatrix(**matrix, int y, int x) { int i, j; for (i = 0; i < y; i++) { for (j = 0; j < x; j++) […]

如何从txt文件C制作数组

我得到了包含以下信息的文本文件: (100; 200;第一个) 。任何人都可以告诉我如何将这些信息分成三个数组: Min = 100,Max = 200,Name = first 。 我试过这个 C = GETC(INP); I =的atoi(szinput); 但它第一次读取10次,第二次读取00次……依此类推 c节省10而不是1,所以我无法获得数组的正确信息…… 因此arraysMin存储1000而不是100 谢谢。