用c语言编写一个函数function,其功能是删除一个字符串中指定下标的字符,其中a指向原字符串,删除指定原的字符串存放在b所指数组中,n中存放指定的下标
时间: 2024-03-22 16:38:05 浏览: 28
好的,下面是用 C 语言编写的函数 `function`,实现删除一个字符串中指定下标的字符:
```c
void function(char *a, char *b, int n) {
int i, j;
for (i = 0, j = 0; a[i] != '\0'; i++) {
if (i != n) {
b[j++] = a[i];
}
}
b[j] = '\0';
}
```
函数说明:
- `a`:原字符串,类型为 `char *`,即字符指针。
- `b`:删除指定字符后的字符串,类型同样为 `char *`,即字符指针。
- `n`:指定要删除的字符的下标,类型为 `int`。
- 函数中使用了两个指针 `i` 和 `j`,分别表示原字符串和新字符串的下标。
- 遍历原字符串,若当前下标不等于指定下标,则将该字符加入新字符串中。
- 最后在新字符串末尾添加一个结束符 `\0`。
使用示例:
```c
#include <stdio.h>
int main() {
char a[] = "Hello, world!";
char b[20];
int n = 7;
function(a, b, n);
printf("%s\n", b);
return 0;
}
```
输出结果:
```
Hello, orld!
```
相关问题
C语言编写一个函数,用哈希函数将一个字符串转换成一个整型数组的下标。这个怎么写
可以使用简单的取余算法,将字符串转换成一个整数,再对数组长度进行取余来得到对应的数组下标。例如:
```c
unsigned int hash_function(char* str, int array_size){
unsigned int hash = 0;
int c;
while ((c = *str++)){
hash = c + (hash << 6) + (hash << 16) - hash; //DJB Hash算法
}
return hash % array_size; //取余得到数组下标
}
```
这个函数用DJB Hash算法将字符串转换成一个32位的无符号整数,再将该整数对数组长度取余得到对应的下标。
用c语言写一个哈希表例子
好的,下面是一个简单的哈希表实现的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TABLE_SIZE 100
typedef struct Node {
char *key;
char *value;
struct Node *next;
} Node;
Node *hash_table[TABLE_SIZE];
// 哈希函数,将字符串转换为数字下标
int hash_function(char *key) {
int sum = 0;
while (*key) {
sum += *key++;
}
return sum % TABLE_SIZE;
}
// 插入键值对
void insert(char *key, char *value) {
Node *node = (Node *) malloc(sizeof(Node));
node->key = key;
node->value = value;
int index = hash_function(key);
node->next = hash_table[index];
hash_table[index] = node;
}
// 查找键对应的值
char *search(char *key) {
int index = hash_function(key);
Node *node = hash_table[index];
while (node) {
if (strcmp(node->key, key) == 0) {
return node->value;
}
node = node->next;
}
return NULL;
}
int main() {
// 插入一些键值对
insert("apple", "red");
insert("banana", "yellow");
insert("orange", "orange");
insert("grape", "purple");
// 查找键对应的值
printf("%s\n", search("apple")); // 输出 "red"
printf("%s\n", search("banana")); // 输出 "yellow"
printf("%s\n", search("orange")); // 输出 "orange"
printf("%s\n", search("grape")); // 输出 "purple"
printf("%s\n", search("pear")); // 输出 "(null)"
return 0;
}
```
以上代码实现了一个简单的哈希表,可以插入键值对并查找键对应的值。在这个例子中,我们使用了一个数组来存储哈希表,每个元素都是一个链表头指针。当插入一个新的键值对时,首先根据键计算出其在数组中的下标,然后将该键值对插入到对应链表的头部。查找键对应的值时,同样需要先计算出其在数组中的下标,然后遍历对应链表,查找是否存在该键对应的节点。
阅读全文