编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 #include<stdio.h> #include<string.h> int main() { char str[100]; char *p; p=&str; scanf("%s",&str); while(*p!='\0') { /******************************* 请在该部分补充缺少的代码 ********************************/ } return 0; }
时间: 2023-07-01 12:23:46 浏览: 109
这道题可以用两个指针来解决,一个指针 `p` 用来遍历原字符串,另一个指针 `q` 用来指向新字符串中下一个要存储的位置。当 `p` 指向的字符是英文字母时,直接跳过,否则将该字符复制到 `q` 指向的位置,并将 `q` 向后移动一位。最后将 `q` 指向的位置设为字符串结束符 `\0` 即可。
代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char new_str[100];
char *p = str;
char *q = new_str;
scanf("%s", str);
while(*p != '\0') {
if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) {
// 如果是英文字母则跳过
p++;
} else {
// 否则将该字符复制到新字符串中
*q = *p;
p++;
q++;
}
}
// 在新字符串结尾添加结束符
*q = '\0';
printf("%s", new_str);
return 0;
}
```
注意,`scanf("%s", &str);` 应该修改为 `scanf("%s", str);`,因为 `str` 已经是指向字符数组的指针,不需要再加取地址符 `&`。
阅读全文