编写程序删除s数组中不符合C语言标识符命名规则的字符串,并输出剩余的字符串。
时间: 2024-02-12 21:08:43 浏览: 104
C语言标识符命名规则要求变量名或函数名必须以下划线或字母开头,后面可以跟着任意数量的字母、数字或下划线。根据这个规则,我们可以编写如下程序来删除不符合规则的字符串:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int is_valid_identifier(char *str) {
// 判断字符串是否以字母或下划线开头
if (!isalpha(str[0]) && str[0] != '_') {
return 0;
}
// 判断字符串中的每个字符是否为字母、数字或下划线
for (int i = 1; i < strlen(str); i++) {
if (!isalnum(str[i]) && str[i] != '_') {
return 0;
}
}
return 1;
}
int main() {
char s[10][20] = {"hello", "world", "123abc", "_var", "1var", "var_", "var+", "var$", "va@r", "va#r"};
int n = 10;
// 删除不符合标识符命名规则的字符串
for (int i = 0; i < n; i++) {
if (!is_valid_identifier(s[i])) {
// 将当前字符串从数组中删除
for (int j = i; j < n - 1; j++) {
strcpy(s[j], s[j+1]);
}
n--;
i--; // 处理完一个字符串后,下一轮循环还要从当前位置开始
}
}
// 输出剩余的字符串
for (int i = 0; i < n; i++) {
printf("%s\n", s[i]);
}
return 0;
}
```
在这个程序中,我们定义了一个 `is_valid_identifier()` 函数来判断一个字符串是否符合标识符命名规则。然后我们在 `main()` 函数中遍历数组中的每个字符串,如果发现当前字符串不符合规则,就将其从数组中删除。最后输出剩余的字符串即可。
阅读全文