Tag: 数组

从C中的函数返回字符串数组

我从给定的文件(字典)读取单个字符串的单词,并将字符串分配给字符串数组的第n个索引。 但它不起作用。 main() for循环的输出始终为e3V\347等,而createWordTable() for循环的输出始终是字典的最后一个单词。 这是我的代码 char** createWordTable(); char** createTable(); int main() { int i; char **hashTable; hashTable = createTable(); hashTable = createWordTable(); for (i=0; i< 338; i++) { printf("%s \n",hashTable[i]); } return 0; } char** createWordTable(){ char word[20],**table; FILE *dicFile; table = createTable(); dicFile = fopen("smallDictionary.txt", "r"); if (dicFile == NULL) { perror("error"); } […]

C中的数组数组,其中数组的长度不同

我知道您可以轻松制作具有固定长度的矩阵: double m[][2]; 但是,我希望有一个数据结构,它是一个数组,我存储具有不同长度的double类型的数组。 我怎么做? 一个例子是: arr1 = {1,2,3,4}; arr2 = {1,2};

将从C例程分配的数组传递给ADA

将结构/记录数组从ADA传递到C例程是一回事。 在这种情况下,内存管理在ADA中完成。 但是当与第三方库连接时,通常存在内存管理在C部分中完成的问题。 例如:对于C结构: typedef struct _MYREC { int n; char *str; } MYREC; 以下C-routine分配Memory并返回一个指向带有n个元素的MYREC数组的指针: MYREC * allocMyrec(int n); 问题是返回的指针不包含ADA中内存安全计算所需的大小信息。 在ADA中我想对(MYREC *)指针使用相应的Array-Definition: type MYREC_Array is array (Int range ) of aliased MYREC; pragma Convention (C, MYREC_Array); 相应的(大小很大的)ADA-Function allocMyrec会是什么样子或者什么是正确的策略? 对于一个元素,可以映射C指针以access MYREC 。 这就是Gnat-Binding生成器的function。 但这没有用。 提示高度赞赏。

错误:在文件范围内修改了’d’

代码1: – int size; struct demo { int a; }; int main() { scanf(“%d”,&size); struct demo d[size]; return 0; } 这段代码工作正常。 代码2: – int size; struct demo { int a; }; int main() { scanf(“%d”,&size); return 0; } struct demo d[size]; 此代码显示错误: – error : variably modified ‘d’ at file scope 为什么这样的错误会出现在Code 2而Code 1运行正常?

如何在创建它时将多个值一次分配给多维数组 – 在C?

我正在用C编程并想知道是否可以一次为多维数组分配多个值? 我尝试了一些技术,但都失败了! 我不想循环遍历数组来赋值(我想要禁食的方式为数组中的所有索引赋值)。 我正在使用的数组:ary [4] [4]。

使用C数组的哪种数据组织可以生成最快的代码?为什么?

根据以下数据,组织元素数组的最佳方法是什么,以便最快的随机访问? 每个元素都有一些int数,一个名称为3个字符,末尾带有’\ 0’,浮点值 。 我看到两种可能的方法来组织和访问这样的数组: 第一: typedef struct { int num; char name[4]; float val; } t_Element; t_Element array[900000000]; //random access: num = array[i].num; name = array[i].name; val = array[i].val; //sequential access: some_cycle: num = array[i].num i++; 第二: #define NUMS 0 #define NAMES 1 #define VALS 2 #define SIZE (VALS+1) int array[SIZE][900000000]; //random access: num […]

为什么在C中可以访问绑定数组?

可能重复: 数组索引在C中超出范围 可以在其范围之外访问局部变量的内存吗? C没有越界错误 我正在尝试这段代码, #include main(){ int a[2],i; a[5] = 12; for(i=0;i<10;i++){ printf("%d\n", a[i]); } return 0; } 它给了我输出: 1053988144 32767 0 3 0 12 -1267323827 32716 0 0 为什么[5]可以访问? 不应该通过RunTime错误吗?

如何在Little Endian与Big Endian架构中存储数组值

我正在询问如何判断数组中的一个元素何时完成,另一个元素何时以endian体系结构开始。 我有2个数组,其中long的大小为8,char的大小为1 long x[2] = {0x012345,0xFEDC}; char c[12] = {‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’0′,’1′,’2′,’3′}; 我想知道如果我们考虑x从内存地址0x100开始并且c从内存地址0x200开始,这些值将如何存储在不同的Endian架构中。 我认为Big Endian地址是{01,23,45,FE,DC} ,其中集合的第一个元素是内存地址0x100 ,下一个是0x101 ,第三个是0x102 ,依此类推,因为它存储了值基于MSB是第一个。 但是,我不确定是否应该在表示内存中的数组的值之间有一个指示符,以表明它是一个不同的元素,如null char。 像{01, 23, 45,’\0′, FE, DC} 同样对于Little Endian Architecture我相信它会将它存储为{45,23,01,DC,FE} ,但我不确定是否应该有一些指示器来突出显示数组中的不同元素

案例标签在C中没有减少到整数常量?

我正在开发一个游戏,我运行了我的代码并得到错误“案例标签不会减少到一个整数常量。” 我想我知道这意味着什么,但我该如何解决呢? 这是我的代码: #include #include 0) { printf(“Please type A, B, C, Donate, Go to work, or Exit\n”); switch(jobs) { case ‘A’: player_cash[0]-=5; player_cash[1]+=5; printf(“Cash=%i\n\n”, player_cash[0]); continue; case ‘B’: player_cash[0]-=5; player_cash[2]+=5; printf(“Cash=%i\n\n”, player_cash[0]); continue; case ‘C’: player_cash[0]-=5; player_cash[3]+=5; printf(“Cash=%i\n\n”, player_cash[0]); continue; case “Donate”: player_cash[0]-=15; //Error here player_cash[1]+=5; player_cash[2]+=5; player_cash[3]+=5; printf(“Cash donated\n\n”); printf(“Cash=%i\n\n”, player_cash[0]); continue; case […]

C和Java处理越界数组访问的方式有何不同?

在Java中 ,我们在尝试访问和数组越界时得到一个漂亮的exception,但在C中并非如此: #include int main() { int x[10] = {1,2,3}; // After the third index, I know that the rest are 0. int i = 0; while (i<99) { // Here I exceed the size of the array, printf("%d",x[i]); // printing non-existent indexes. i++; } return 0; } 输出是: 12300000001021473443840268687241986531780216078041842686812-12686816199941806157 0338438-2199933010019993299657804184019993359001214734438441990611-819265930944- 8192925345321-122881852697619690479012147344384268694020027537742147344384145346 587600214734438400102686884-819226869482003047601567625672026869562002753732-120 02706633004199040214734438402020893505321130682200320201752380100000243875924666 4687366080-21479789413447414207980 […]