记录一个踩过的坑 看不见的特殊字符

记录一个踩过的坑 看不见的特殊字符

之前发到CSDN上的代码没有以代码格式粘贴,拷贝出来使用的时候在PgAdmin4.3.1版本下没有任何提示信息。

在PgAdmin3版本下可以看到错误提示。

经过一顿绝望的排查发现是代码里面的空白不是空格也不是制表符。

使用notepad++ 显示所有特殊字符后可以发现差异,第一个是制表符,第二个是空格,第三个是不知名的特殊字符。

 

有没有人知道这个特殊字符是啥,给个评论答个疑呗~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我能够回答您的问题。 以下是使用C语言实现计算输入字符串中大写、小写、数字和特殊字符个数的代码示例: ``` #include <stdio.h> int main() { char str[100]; int upper_count = 0, lower_count = 0, digit_count = 0, special_count = 0; int i; printf("请输入一个字符串:\n"); scanf("%s", str); for (i = 0; str[i] != '\0'; i++) { if (str[i] >= 'A' && str[i] <= 'Z') { upper_count++; } else if (str[i] >= 'a' && str[i] <= 'z') { lower_count++; } else if (str[i] >= '0' && str[i] <= '9') { digit_count++; } else { special_count++; } } printf("大写字母个数:%d\n", upper_count); printf("小写字母个数:%d\n", lower_count); printf("数字个数:%d\n", digit_count); printf("特殊字符个数:%d\n", special_count); return 0; } ``` 该程序使用 `scanf` 函数从控制台读取用户输入的字符串,然后使用 `for` 循环遍历字符串中的每个字符,通过判断字符的 ASCII 码来统计大写字母、小写字母、数字和特殊字符的个数,并最后输出结果。 ### 回答2: 首先,我们可以使用C语言中的字符数组来存储输入的字符串。然后,我们定义计数器变量来记录大写字母、小写字母、数字和特殊字符的个数,并初始化为0。 接下来,我们使用循环结构来遍历数组中的每个字符。在每次循环中,我们可以通过判断字符的ASCII值来确定其类型。大写字母的ASCII范围是65到90,小写字母的范围是97到122,数字的范围是48到57,其余的都属于特殊字符。 当字符属于某一类型时,对应计数器变量就加1。最后,输出四个计数器变量的值,即为大写字母、小写字母、数字和特殊字符的个数。 下面是一个示例代码: ```c #include <stdio.h> int main() { char str[100]; int uppercase = 0, lowercase = 0, digits = 0, specialchar = 0; printf("请输入一个字符串: "); gets(str); // 输入字符串 int i = 0; while(str[i] != '\0') { if(str[i] >= 'A' && str[i] <= 'Z') uppercase++; else if(str[i] >= 'a' && str[i] <= 'z') lowercase++; else if(str[i] >= '0' && str[i] <= '9') digits++; else specialchar++; i++; } printf("大写字母个数: %d\n", uppercase); printf("小写字母个数: %d\n", lowercase); printf("数字个数: %d\n", digits); printf("特殊字符个数: %d\n", specialchar); return 0; } ``` 这段代码中,我们使用了`gets()`函数来读取输入的字符串,但请注意`gets()`函数存在安全性问题。实际开发中,推荐使用更安全的`fgets()`函数来替代。同时,该代码只能处理长度不超过数组大小的输入字符串,超出部分可能会导致溢出问题。对于更长的字符串处理,我们可以动态分配内存来解决。 ### 回答3: C语言中,可以使用字符数组来存储字符串,然后通过遍历字符数组来计算大写字母的个数、小写字母的个数、数字的个数和特殊字符的个数。 具体步骤如下: 1. 首先,声明一个字符数组来存储输入的字符串,并给数组分配足够的内存空间。 ```c char str[100]; ``` 2. 使用scanf函数获取用户输入的字符串。 ```c scanf("%s", str); ``` 3. 声明变量来存储大写字母个数、小写字母个数、数字个数和特殊字符个数。 ```c int upperCount = 0, lowerCount = 0, digitCount = 0, specialCount = 0; ``` 4. 使用循环遍历字符数组,判断每个字符的类型,并根据类型进行计数。 ```c int i = 0; while (str[i] != '\0') { if (str[i] >= 'A' && str[i] <= 'Z') { upperCount++; } else if (str[i] >= 'a' && str[i] <= 'z') { lowerCount++; } else if (str[i] >= '0' && str[i] <= '9') { digitCount++; } else { specialCount++; } i++; } ``` 5. 打印大写字母个数、小写字母个数、数字个数和特殊字符个数。 ```c printf("大写字母个数: %d\n", upperCount); printf("小写字母个数: %d\n", lowerCount); printf("数字个数: %d\n", digitCount); printf("特殊字符个数: %d\n", specialCount); ``` 完整代码如下: ```c #include <stdio.h> int main() { char str[100]; printf("请输入一个字符串: "); scanf("%s", str); int upperCount = 0, lowerCount = 0, digitCount = 0, specialCount = 0; int i = 0; while (str[i] != '\0') { if (str[i] >= 'A' && str[i] <= 'Z') { upperCount++; } else if (str[i] >= 'a' && str[i] <= 'z') { lowerCount++; } else if (str[i] >= '0' && str[i] <= '9') { digitCount++; } else { specialCount++; } i++; } printf("大写字母个数: %d\n", upperCount); printf("小写字母个数: %d\n", lowerCount); printf("数字个数: %d\n", digitCount); printf("特殊字符个数: %d\n", specialCount); return 0; } ``` 通过以上步骤,就能够用C语言非函数方式输入一个字符串,并计算出大写字母的个数、小写字母的个数、数字的个数和特殊字符的个数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值