#include<stdio.h> #include<string.h> void fun1(char * s) { char temp[100]; int i,j; char *p=s; j=0; for(i=0;p[i]!='\0';i++) { if(p[i]>='0' && p[i]<='9') { continue; } temp[j]=p[i]; j++; } temp[j]='\0'; strcpy(s,temp); }解释一下
时间: 2024-03-08 13:45:15 浏览: 40
这是一个函数定义,函数名为`fun1`,接收一个参数为字符串指针类型的`s`。该函数的作用是将字符串`s`中的数字字符去掉,将其他字符存入一个临时的字符数组`temp`中,最后再将`temp`中的内容复制回`s`中。
函数内部定义了一个临时的字符数组`temp`,容量为100,用于存储去掉数字字符后的字符串。定义了两个整型变量`i`和`j`,其中`i`用于循环遍历`s`中的每一个字符,`j`表示在`temp`中存储的字符的个数。
在循环中,首先定义了一个字符指针`p`,指向`s`的开头,然后对`s`中的每一个字符进行判断。如果该字符是数字字符,则使用`continue`跳过该字符继续下一个循环;否则将该字符存入`temp`中,并将`j`的值加1。
最后,将`temp`中最后一个字符的下一个位置赋为`\0`,表示字符串结束。然后使用`strcpy`函数将`temp`中的内容复制回`s`中。
该函数可以用于去掉字符串中的数字字符,返回一个去掉数字字符的新字符串。
相关问题
#include <stdio.h> #include <string.h> void fun(char *s,int num) { } void main() { char s[10]; gets(s); fun(s,7); printf("%s", s); }
这是一道需要填空的题目,题目思路是将字符串 `s` 中的前 `num` 个字符反转。可以使用两个指针分别指向字符串的首位和末位,依次交换两个指针所指向的字符,直到两个指针相遇为止。具体实现可以这样写:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s, int num) {
int i = 0, j = num - 1;
while (i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
}
void main() {
char s[10];
gets(s);
fun(s, 7);
printf("%s", s);
}
```
其中,`i` 和 `j` 分别表示指向字符串的首位和末位的指针,`temp` 是一个临时变量,用于交换两个指针所指向的字符。在循环中,每次将指针向中间移动一位,并交换两个指针所指向的字符,直到两个指针相遇为止。最终输出交换后的字符串即可。
完成以下C语言代码功能:将主函数中输入的字符串反序存放。#include<stdio. h> #include<conio. h> #include(string. h> #define N 50 void fun(char *str, int n)
我可以提供一个示例代码:#include <stdio.h>
#include <string.h>int main ()
{
char str[100], temp;
int i, j; printf("输入一个字符串: ");
gets(str); j = strlen(str) - 1; for (i = 0; i < j; i++, j--)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
} printf("反序后的字符串: %s", str); return 0;
}
阅读全文