//字符串由字母和数字组成,函数中去掉字符串中的所有数字字符 void fun1(char * s) { } int main(void) { char str[100]; gets(str);//heloo12345world fun1(str); puts(str);//helloworld return 0; }
时间: 2024-03-05 07:52:30 浏览: 24
您可以使用指针的方法遍历字符串,如果当前字符是数字,则将其删除。具体实现方法如下:
```
#include <stdio.h>
#include <string.h>
void fun1(char *s) {
char *p = s; // 定义指针p指向字符串s
while (*p != '\0') { // 判断当前字符是否为'\0'
if (*p >= '0' && *p <= '9') { // 当前字符是数字
memmove(p, p+1, strlen(p+1)+1); // 将当前字符删除
}
else {
p++;
}
}
}
int main(void) {
char str[100];
gets(str);
fun1(str);
puts(str);
return 0;
}
```
注意,使用`gets()`函数存在缓冲区溢出问题,建议使用`fgets()`函数代替。另外,在实际开发中,应该使用更加安全的字符串处理函数,如`strtok()`、`strtok_s()`等。
相关问题
C语言 字符串含有数字和字母,去掉所有数字字符 使用函数,函数为void fun1(char * s){}
好的,针对您的问题,可以如下实现 `void fun1(char *s)` 函数:
```c
#include <stdio.h>
#include <ctype.h>
void fun1(char *s) {
char *p = s;
while (*p) {
if (!isdigit(*p)) {
*s++ = *p;
}
p++;
}
*s = '\0';
}
int main() {
char str[100];
printf("请输入一个字符串:\n");
scanf("%s", str);
fun1(str);
printf("去掉数字后的字符串为:%s\n", str);
return 0;
}
```
在这个示例代码中,我们定义了一个函数 `void fun1(char *s)`,该函数的参数为一个字符指针,表示需要处理的字符串。在函数内部,我们使用两个指针 `p` 和 `s` 分别指向字符串的首个字符,然后使用while循环遍历该字符串中的每个字符,使用isdigit函数判断该字符是否为数字字符,如果不是则将其赋值给 `s` 指针指向的位置,并将 `s` 指针向后移动一个位置,否则忽略该字符。最终将 `s` 指针指向的位置赋值为 '\0',表示字符串的末尾。在主函数中,我们通过调用 `fun1` 函数将输入的字符串去掉数字后输出。
希望这个示例代码能够帮助您解决问题,如果您还有其他问题,可以随时提出。
请编写函数void fun(char *s),将其中所有空格删除,在主函数中完成字符串的输入及输出。
好的,下面是函数的实现:
```c
void fun(char *s) {
char *p = s; // 指向字符串起始位置的指针
while (*p != '\0') { // 遍历整个字符串
if (*p != ' ') { // 如果当前字符不是空格
*s++ = *p; // 将当前字符复制到新的位置
}
p++; // 移动指针
}
*s = '\0'; // 在新的字符串结尾添加'\0'
}
```
在主函数中,可以这样调用函数:
```c
int main() {
char str[100];
printf("请输入字符串:");
scanf("%[^\n]", str); // 输入字符串,可以含有空格
fun(str); // 调用函数删除空格
printf("删除空格后的字符串为:%s\n", str); // 输出结果
return 0;
}
```
注意,scanf函数中的"%[^\n]"表示输入一行字符串,直到遇到换行符为止。这样可以保证输入的字符串中包含空格。