用c语言编写函数del,其功能为删除字符串s中所有非数字字符
时间: 2023-05-20 12:03:39 浏览: 167
以下是用 C 语言编写的函数 del,其功能为删除字符串 s 中所有非数字字符:
```c
void del(char *s) {
int i, j;
for (i = j = 0; s[i]; i++) {
if (isdigit(s[i])) {
s[j++] = s[i];
}
}
s[j] = '\0';
}
```
该函数的实现方法是遍历字符串 s 中的每个字符,如果该字符是数字,则将其复制到新的字符串中,最后将新字符串的末尾设置为 '\0'。这样就可以删除字符串 s 中所有非数字字符了。
相关问题
用C语言写代码,不用指针。删除字符串所有连续相同的字符 【问题描述】 编写函数del_samechar,删除给定字符串中所有连续相同的字符。然后在主函数中输入一个字符串,调用该函数删除连续相同的字符后输出。
在C语言中,可以使用数组和索引来达到这个目的,而不需要直接使用指针。这里是一个简单的实现,它创建了一个新的数组并只保留不连续的字符:
```c
#include <stdio.h>
#include <string.h>
void del_samechar(char* str) {
int len = strlen(str);
if (len <= 1) { // 如果字符串长度小于等于1,无需处理
return;
}
char result[len]; // 新建一个结果数组
result[0] = str[0];
int j = 1; // 结果数组的索引
for (int i = 1; i < len; ++i) {
if (str[i] != str[i - 1]) { // 当前字符不等于前一个字符
result[j++] = str[i]; // 将新字符添加到结果数组
}
}
result[j] = '\0'; // 结束字符串
// 将结果复制回原字符串,因为我们假设了原字符串足够大
strcpy(str, result); // 注意这里不会覆盖原始字符串,只是替换了连续相同的部分
}
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 去除换行符
del_samechar(input);
printf("删除连续相同字符后的字符串: %s\n", input);
C语言编写一个函数del(s),将输入的字符串s中重复出现的字符删除,只保留最后出现的字符,
好的,我来给您写一个C语言函数del(s)的示例代码,实现删除字符串中重复出现的字符,只保留最后出现的字符。代码如下:
```c
void del(char s[])
{
int i, j, k;
int len = strlen(s);
for (i = 0; i < len; i++) {
for (j = i + 1; j < len;) {
if (s[j] == s[i]) {
for (k = j; k < len; k++) {
s[k] = s[k + 1];
}
len--;
} else {
j++;
}
}
}
}
```
这个函数的实现思路是,首先遍历字符串s中的每一个字符,然后再从当前字符的下一个字符开始遍历,如果发现重复的字符,就将后面的字符依次左移,覆盖掉当前的重复字符,直到字符串的长度减小了1。这样就可以实现只保留每个字符最后出现的位置的功能。
您可以在自己的程序中调用这个函数del(s),传入需要处理的字符串s进行处理。
阅读全文