#include<stdio.h> #include<string.h>// 字符串由字母和数字组成,去掉字符串中所有数字 void fun(char* s) { char temp[100]; int i,j; int len=strlen(s); char *p =s; j=0; for(i=0;i<len;i++) { if(s[i]>='0'&&s[i]<='9') { continue; } else if(s[i]>='a'&&s[i]<='z') { s[j]=s[i]; j++; } else if(s[i]>='A'&&s[i]<='Z') { s[j]=s[i]; j++; } /*else temp[j++]=p[i];*/ } //temp[j]='\0'; s[j+1]='\0'; //strcpy(s,temp); for(i=0;i<j+1;j++) { printf("%c",s[j]); } } int main(void) { char str[100]; gets(str); fun(str); puts(str); return 0; }代码哪里出现问题
时间: 2024-03-06 09:50:14 浏览: 20
在函数fun中,最后一行的for循环中,循环变量i没有递增,导致死循环。应该将循环体中的s[j]改为s[i],将循环变量改为i++,即可解决该问题。修改后的代码如下:
```c
void fun(char* s) {
char temp[100];
int i,j;
int len=strlen(s);
char *p =s;
j=0;
for(i=0;i<len;i++)
{
if(s[i]>='0'&&s[i]<='9')
{
continue;
}
else if(s[i]>='a'&&s[i]<='z')
{
s[j]=s[i];
j++;
}
else if(s[i]>='A'&&s[i]<='Z')
{
s[j]=s[i];
j++;
}
/*else
temp[j++]=p[i];*/
}
//temp[j]='\0';
s[j]='\0';
//strcpy(s,temp);
for(i=0;i<j;i++)
{
printf("%c",s[i]);
}
}
```
相关问题
#include<stdio.h>#include<stdlib.h>#include<string.h>
在C语言中,`#include<stdio.h>`、`#include<stdlib.h>`和`#include<string.h>`分别包含了输入/输出、内存管理以及字符串处理相关的库。这里给你演示如何使用这些头文件中的函数:
1. **输入/输出(stdio.h)**:
```c
#include<stdio.h>
int main() {
printf("Hello, World!\n"); // 使用printf输出字符串
scanf("%s", "Enter your name: "); // 使用scanf从用户那里读取输入
return 0;
}
```
2. **内存管理(stdlib.h)**:
```c
#include<stdlib.h>
int *createArray(int size) {
int *array = malloc(size * sizeof(int)); // 分配动态内存
return array;
}
void freeMemory(int *array, int size) {
free(array); // 释放已分配的内存
}
```
3. **字符串处理(string.h)**:
```c
#include<string.h>
char* copyString(const char* src) {
char* dest = (char*)malloc(strlen(src) + 1); // 动态分配内存复制字符串
strcpy(dest, src);
return dest;
}
```
注意,C语言的标准库函数可能需要链接到适当的库,如`-lstdc++` 或 `-lm`,具体取决于编译器设置。
#include <stdio.h> #include <stdlib.h> #include <string.h> //头文件
这三个头文件在C语言中分别扮演着不同的角色:
1. `#include <stdio.h>`: 这是标准输入输出库(Standard Input/Output Library)的包含指令,它提供了基本的文件输入输出功能,如`printf()`(输出格式化字符串)和`scanf()`(输入格式化数据)等,用于程序与用户交互或处理文件内容。
2. `#include <stdlib.h>`: 这个头文件包含了C语言的一些基本数据类型和内存管理函数,比如`malloc()`和`free()`,用于动态分配和释放内存,以及系统函数如`exit()`(退出程序)。
3. `#include <string.h>`: 字符串处理库的包含指令,提供了一系列字符串操作的函数,如`strlen()`(计算字符串长度)、`strcpy()`(复制字符串)、`strcat()`(拼接字符串)等,这些都是处理字符串操作的常用工具。
如果你正在编写C程序,这些头文件会为你的程序提供基本的功能,例如输入用户输入、动态内存管理,以及处理字符串数据。如果你想要深入了解这些头文件中的具体函数和用法,可以提问相关的函数如何使用或者它们的常见应用场景是什么。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)