c语言,编写函数void fun(char str[],int i,int n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。
时间: 2024-02-19 17:03:39 浏览: 98
您可以参考下面的C语言代码实现:
```c
void fun(char str[], int i, int n) {
int len = strlen(str); // 获取字符串长度
if (i < 0 || i >= len || n <= 0) { // 如果索引无效或者删除字符数小于等于0,直接返回
return;
}
// 从第i个字符开始,删除连续的n个字符
for (int j = i; j < len - n; j++) {
str[j] = str[j + n];
}
str[len - n] = '\0'; // 设置新的字符串结束符
}
```
函数中首先判断输入的i和n是否合法,如果不合法直接返回。接着从第i个字符开始,依次将后面的字符向前移动n个位置,以此实现字符的删除。最后在新字符串的最后一个位置添加结束符'\0'。
相关问题
使用c语言实现编写函数void fun(char str[],int i,int n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。
以下是使用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
void fun(char str[], int i, int n) {
int len = strlen(str);
if (i < 0 || i >= len) {
printf("Invalid index i.\n");
return;
}
if (n <= 0 || i + n > len) {
printf("Invalid number of characters to delete.\n");
return;
}
memmove(str + i, str + i + n, len - i - n + 1);
}
int main() {
char str[100];
int i, n;
printf("Enter a string: ");
fgets(str, 100, stdin);
str[strcspn(str, "\n")] = '\0'; // remove newline character
printf("Enter index i and number of characters to delete n: ");
scanf("%d%d", &i, &n);
fun(str, i, n);
printf("Resulting string: %s\n", str);
return 0;
}
```
函数`fun`接受一个字符串`str`,一个起始索引`i`和一个要删除的字符数`n`作为参数。如果`i`或`n`无效,则函数将输出错误消息并返回。否则,函数将使用`memmove`函数从字符串中删除指定的字符,并将其余字符向左移动。最后,主函数将打印结果字符串。
c语言编写一个函数,接收一个字符串,统计其中数字字符个数及字母字符个数。函数原型为:void fun(const char *str, int* char_N, int* letter_N);
好的,下面是代码:
```c
void fun(const char *str, int* char_N, int* letter_N) {
int num_count = 0;
int letter_count = 0;
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
num_count++;
} else if (isalpha(str[i])) {
letter_count++;
}
}
*char_N = num_count;
*letter_N = letter_count;
}
```
这个函数使用了循环遍历字符串中的每个字符,通过isdigit和isalpha函数来判断字符是数字还是字母。最后将数字字符个数和字母字符个数分别赋值给char_N和letter_N指针所指向的变量。
阅读全文