Tag: 数组

如何使用printf从字符串数组中打印单个字符?

比方说我有 char *names[] = { “Tom”, “Jerry” }; 我想用printf打印“杰里”中的“e”。 我的第一直觉是 printf(“%c\n”, *names[5]); 但当我应用我一直在学习的指针时,我意识到这是完全垃圾代码,因为5指的是names不存在的第五个指针,而不是“Jerry”中的“e”。 names包含的指针只会引用各自字符串中第一个字符的内存地址。 因此,我真正需要做的是在names[1]添加一个字节以指向,并在“Jerry”中打印“e”。 但我不确定如何做到这一点,或者它是否在C中被允许。 完成此任务的最佳方法是什么? 先感谢您。

防止添加重复条目(C程序)

我有一个方法可以在表格中添加一个条目。 条目是人的姓名和地址。 int rtable_add(RESIZABLE_TABLE * table, char * name, void * value) { table->array[table->currentElements].name = strdup(name); table->array[table->currentElements].value = value; table->currentElements++; int i = 0; for(i = 0; i currentElements;i++) { if(strcmp(table->array[i].name, name) == 0) { table->array[i].value = value; } } return 0; } 但是,如果我再次将相同的名称传递给方法但传递不同的地址,它应该使用新的地址更新旧条目的地址(即值)但是它不应该将其视为一个完整的新条目。 例如, 如果我给出一组条目 – 1)乔治“126 Vine Street” 2)阿什利“889 Vine Street” 3)乔治“556 Vine […]

C – 生成X字符单词的所有可能性

编辑:我的意思是排列,而不是组合。 谢谢。 我意识到这是一个相当开放的问题,我不是每个人都在寻找代码,但实际上有些提示从哪里开始。 我想要的是一个程序,它可以生成给定长度的每个字符组合,即用户输入4,程序将生成长度为4的ASCII字符的每种可能组合。 不确定我会从哪里开始,也许是使用哈希表? 当然会需要循环,但我不确定如何设计它们来生成组合。 到目前为止,它始终是一个案例,例如,循环直到1000件事情发生。 任何建议都非常感谢! 干杯, T.

二进制搜索C.

这是二进制搜索function的签名: void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 我不明白为什么我们发送一个void *作为数组指针,而不是void **,因为据我所知,如果我在int数组中寻找一个int,我应该发送一个int *作为数组,而不是int …如果函数的签名是这样的,实现是否会有很大的不同(或者可能无法实现): void *bsearch(const void *key, const void** base , size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 提前致谢。

struct array中的strstr char数组

我有一个结构定义为; struct player { int no, age; char name[20]; } players[10]; 数组从文件中填充。 我尝试做的是,从用户获取输入,将输入添加到char数组,将其发送到循环中的search(char lookup [])函数和strstr name字段。 EDİT:对不起,我更正了订单。 我正试图在一个循环中strstr。 char *p = strstr(players[x].name, inputFromUser); 但是p总是为空。 我怎样才能做到这一点? 提前致谢。 编辑 – 代码添加… #include #include #include #include struct player { int no, age; char name[20]; } players[20]; void fillstruct(char *); void search(char []); int main(int argc, char *argv[]) { […]

免费的2Darrays列

我有一个2D数组的字符串,动态分配: char*** allocateArray(int line, int col) { char*** dictionary; int i=0,j=0; dictionary=(char***)malloc(sizeof(char**)*line); for(i=0;i<line;i++) { dictionary[i] = (char**)malloc(sizeof(char*)); for(j=0;j<col;j++) dictionary[i][j] = (char*)malloc(sizeof(char*)); } return dictionary; } 现在我想释放最后一栏(比如说),我该怎么办? 我使用free(dictionary[i][j]) ,但它实际上是免费的? 数组中的[i][j]单元格,或指向它的指针? 我需要释放两者。

memcpy导致’exc bad access’

我试图循环一个数组并复制数据,但在1023循环后,我得到一个exc bad access消息抛出,我感觉它可能与我的记忆有关。 在我的循环中,我需要将数据附加到我的totalValues数组,所以我这样做: memcpy(totalValues + totalCopied, tempBuffer, 600 * sizeof(float)); 这是在一个循环中完成的,并且totalCopied会跟踪已经将多少数据附加到totalValues以便我知道在循环再次点击memcpy时从哪里写入。 我不确定为什么会出现“错误访问”错误,但我的理论是内存不连续,因此, totalValues + totalCopied行可能会造成麻烦。 我不确定在这种情况下是否会抛出错误,或者无论如何都会覆盖内存。 有趣的是,它总是发生在1023循环之后。 如果我删除’memcpy’行,程序循环没有任何问题。 可能导致这种情况的任何想法? 编辑 – 原因是内存分配是硬编码为另一个文件。 通常,在内存分配之前我不知道文件的长度,那么如何确保在运行时分配足够的内存?

交换char * array 导致问题

void sortArray(char* array[], int count){ int compare; int index; for(index = 0; index < count; index++){ //runs through array, keeping track of index for(compare = index; compare < count; compare++){ if (strcmp(array[compare] , array[index]) <= 0){ swap(*(array+compare), *(array+index)); } } } } void swap(char *strA, char *strB){ char *temp = (char *)malloc((strlen(strA)+1) * sizeof(char)); assert(temp!=NULL); […]

C中的多维数组

这与我在这个问题中的答案的评论有关: 如何从1d中转出2d数组? 所以,请考虑以下代码段: int M = 5; int N = 5; int** theArray = (int**) malloc(M*sizeof(int*)); for (int i = 0; i < M; i++) { theArray[i] = (int*) malloc(N*sizeof(int)); for(int j = 0 ; j < N; j++) { theArray[i][j] = i+j; printf("%d ", theArray[i][j]); } printf("\n"); } for (int k = 0; k […]

C调整动态数组的大小

我正在为C类创建动态数组数据结构。 我已经完成了大部分工作,现在我正在测试它。 它目前在resize时卡住了。 我用过printf来解决这个问题。 看起来resize正在工作,但是当我去添加我的下一个项目后resize时,它就停在那里。 我认为这可能与我的内存分配或我指向的方式有关,并在resize期间释放数组。 我是C的新手,所以这些都是我的观点。 #include #include #include “dynArray.h” #include struct DynArr { TYPE *data; /* pointer to the data array */ int size; /* Number of elements in the array */ int capacity; /* capacity of the array */ }; /* ************************************************************************ Dynamic Array Functions ************************************************************************ */ /* Initialize (including allocation of […]