Tag: 数组

打印一系列字符时遇到问题?

由于我不太了解我遇到的整体问题,因此调试变得非常困难。 char *o_key_pad = (char*)malloc(SHA256_DIGEST_LENGTH*sizeof(char)); for(int i = 0; i < SHA256_DIGEST_LENGTH; i++){ o_key_pad[i] = 'a'; } printf("%s\n", o_key_pad); char *i_key_pad = (char*)malloc(SHA256_DIGEST_LENGTH*sizeof(char)); for(int i = 0; i < SHA256_DIGEST_LENGTH; i++){ i_key_pad[i] = 'b'; } printf("%s\n", o_key_pad); printf("%s\n", i_key_pad); 我获得了输出: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 为什么数组’o_key_pad’扩展到包含我放在数组’i_key_pad’中的任何内容,看起来像某种内存问题? 注意:我知道它可以更有效地完成,但为了更清楚地表明我的观点,我已经这样做了。

如何在C中漂亮打印数组

所以我有这个问题,我将打印数组。 输出应该是这样的: {element0,element1,element2} 所以我写了这个: #include “stdio.h” main() { int a[10] = {1, 0, 3, 10, 20, 0, 7, 8, 15, 14}; int i; for (i = 0; i < 10; i++) { printf("{%d, }", a[10]); } } 好吧,我怎么能在世界上写出一行中的所有数字,它们应该在大括号之间,用逗号分隔。 我假设你应该使用一些指向所有数字的指针。 但我是新手,从来没有学过这个,而且相当棘手…… 是的,但我认为我应该使用指针,如果我没有弄错。

在C中返回一个字符串数组

我正在进行一项任务,我需要让一个方法返回一个指向字符串数组的指针,从文件中读取。 该函数有效,但是当我尝试将返回的指针分配给main函数中的变量时,我最终得到一个空值数组。 这是我的代码: #include char **buildAnsArray(){ FILE *in; int num, i; in = fopen(“data.txt”, “r”); fscanf(in, “%d”, &num); char ansArray[10][num]; for(i = 0; i < num; i++){ fscanf(in, "%s", ansArray[i]); } return ansArray; }; main(){ char **ansArray = buildAnsArray(); } 我正在使用的输入文件(data.txt)以: 3 B 20 1101 ansArray(在buildAnsArray中)正确包含{‘B’,’20’,’1101’},但ansArray(在main中)为空。 我知道我可以将所有内容移动到main,而不用担心将指针返回到字符串数组,但是赋值需要buildAnsArray函数。 我该怎么做才能解决这个问题?

从表中删除元素(c程序)

我有一个方法rtable_remove,如下所示 int rtable_remove(RESIZABLE_TABLE * table, char * name) { int i = 0; int j = 0; int position = 0; for(i = 0; i currentElements;i++) { if(strcmp(table->array[i].name, name) == 0) { position = i; free(&(table->array[i].name)); free(&(table->array[i].value)); for(j = position; j currentElements;j++) { table->array[j].name = table->array[j+1].name; table->array[j].value = table->array[j+1].value; } table->currentElements–; } } return 0; […]

将字符串数组传递给函数分段错误

所以,我在下面编写了这个代码,它应该将一个字符串数组传递给一个函数,然后将该数组按字母顺序排序。 我知道我做的方式可能并不漂亮,但它适用于学校,我需要将它传递给函数并使用strcmp 。 我遇到了一些问题,但我设法将所有编译错误排序。 但是,现在,当我尝试运行程序时,我得到错误segmentation fault(core dumped) 。 有人能引导我到我犯错误的地方吗? #include #include #include #include void sort(char *str[]); int main() { char *states[11] = {“Florida”, “Oregon”, “California”, “Georgia”}; sort(states); return 0; } void sort(char *str[]) { int x, y; char alpha[11] = {0}; for(x = 1; x < 4; x++){ for(y = 1; y 0){ strcpy(alpha, str[y […]

C realloc不改变字符数组的表观大小

当我运行下面的代码时,我得到了给定的输出。 #include /* printf */ #include /* malloc, realloc */ int main() { char* characters = (char *) malloc(10 * sizeof(char)); printf(“Before: characters at %p, size=%lu\n”, (void *) characters, sizeof(characters) / sizeof(characters[0])); char* temp = (char *) realloc(characters, 100); if (temp) { printf(“After realloc, characters size = %lu, temp size = %lu\n”, sizeof(characters) / sizeof(characters[0]), […]

乘以两个数字数组

任何人都可以告诉我如何在C中乘以两个数字数组? 数组数组基本上来自两个包含数字的字符串。 例如:123456和132465。 编辑:我有两个字符串, S1 = “123456” , S2=”132546″ 。 然后我将这两个字符串转换为整数数组,即int IS1 [6]和IS2 [6] IS1[1] = 1, IS1[2] = 2…… 和 IS2[1] = 1, IS2[2] = 3….. 现在我必须多了几个这两个阵容。 请帮忙。

使用malloc作为结构的多维数组

这可能是一个基本问题,但我想为结构的三维数组分配内存。 我正在尝试从文件中读取双打并想要存储在struct中。 第一行是块编号(这里不相关,因为它总是1),第二行分别表示X,Y和Z坐标中的网格点数。 在这种情况下,X中有10个点,Y中有5个,Z方向上有1个。 从第三行开始,每个点的X,Y,Z坐标是我想要阅读的双打。 首先是所有X分量(即10 * 5 * 1 x坐标,然后类似Y和Z)。 文件格式如下: 1 10 5 1 0.000000e+00 1.111111e+00 2.222222e+00 3.333333e+00 4.444445e+00 5.555555e+00 6.666667e+00 7.777778e+00 8.888889e+00 1.000000e+01 0.000000e+00 1.111111e+00 2.222222e+00 3.333333e+00 4.444445e+00 5.555555e+00 6.666667e+00 7.777778e+00 8.888889e+00 1.000000e+01 0.000000e+00 1.111111e+00 2.222222e+00 3.333333e+00 4.444445e+00 5.555555e+00 6.666667e+00 7.777778e+00 8.888889e+00 1.000000e+01 0.000000e+00 1.111111e+00 2.222222e+00 3.333333e+00 4.444445e+00 5.555555e+00 6.666667e+00 7.777778e+00 8.888889e+00 […]

如何在C中将char指针数组复制到另一个

我试图将char指针数组存储到另一个char指针数组。 我正在获得相同的分段错误。 int main(int argc, const char* argv[]) { int argcCpy = argc; char* argvCpy[10] = {}; for(argcCpy = argc; argcCpy>0; argcCpy–) { argvCpy[argcCpy] = (char *) malloc(strlen(argv[argcCpy])); memcpy(argvCpy[argcCpy], argv[argcCpy], strlen(argv[argcCpy])); printf(“\nCount: %d, string: %s”, argcCpy, argvCpy[argcCpy]); } return 0; } 我花了足够的时间来完成这项工作,但我无法做到。 此外,已经提出了同样的问题,这个问题也没有得到答复。 如果有人可以让我知道相同的工作代码,那将非常有帮助。 希望这个回答。 类似问题的链接没有被发现 – C初学者 – 将char *数组复制到另一个char *数组 谢谢。

动态多维数组

我需要一个多维的字符数组,它只在一个维度上是动态的… 我必须存储一对长度为10(或更少)字符的字符串,但具有可变数量的“对”。 我的想法是这样的 char (*instrucao)[2][10]; 这给了我一个指向2×10字符数组的指针,但当我做这样的事情时这不能正常工作: char strInstrucoes[117], *conjunto = calloc(21, sizeof(char)); instrucao = calloc(1, sizeof(char[2][10])); conjunto = strtok(strInstrucoes,”() “); for(i = 0; conjunto != NULL; i++){ realloc(instrucao, i+1*sizeof(char[2][10])); sscanf(conjunto,”%[^,],%s”, instrucao[i][0], instrucao[i][1]); printf(“%s | %s\n”, instrucao[i][0], instrucao[i][1]); conjunto = strtok(NULL, “() “); } 将strInstrucoes作为(abc,123) (def,456) (ghi,789) ,我没有矩阵,每行3对2对,如下所示: abc | 123 def | 456 ghi | […]