以下程序中的letters( )函数,主函数调用该函数用以将字符数组str1中出现的英文字母依次存放在字符数组str2中(所有大写字母在前,小写字母在后)#include <stdio.h> void letters(char s[], char str[ ]) { /**/ 请在此处填写答案,并仅复制此处答案提交,不要复制其他代码。 /**/ } int main() { char str1[100], str2[100]; gets(str1); letters(str1, str2); puts(str2); return 0; }
时间: 2024-02-24 13:53:33 浏览: 52
C语言字符/字符串相关函数收藏大全
以下是letters()函数的代码实现:
```c
void letters(char s[], char str[]) {
int i, j, k;
j = k = 0;
for (i = 0; s[i] != '\0'; i++) {
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) {
if (s[i] >= 'a' && s[i] <= 'z') {
str[k++] = s[i];
} else {
str[j++] = s[i];
}
}
}
for (i = 0; s[i] != '\0'; i++) {
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) {
continue;
} else {
str[j + k++] = s[i];
}
}
str[j + k] = '\0';
}
```
该函数的实现思路如下:
1. 使用两个指针`j`和`k`,`j`指向大写字母应该存放的位置,`k`指向小写字母应该存放的位置。
2. 遍历输入的字符串`s`,如果当前字符为英文字母,则判断是大写字母还是小写字母。如果是小写字母,则存放在`str`中小写字母应该存放的位置;如果是大写字母,则存放在`str`中大写字母应该存放的位置。
3. 遍历输入的字符串`s`,如果当前字符不是英文字母,则将其存放在`str`中剩余的位置。
4. 在`str`的末尾添加一个空字符,表示字符串结束。
需要注意的是,该函数使用了`gets()`函数,该函数存在安全漏洞,建议使用更安全的函数替代,如`fgets()`。
阅读全文