|
5鱼币
S1E22
0. 获取字符串的长度 —— strlen 函数的进阶要求
下面的代码是课后作业的答案
但是,我去试了一下这个程序,我输入“逆天”两个字,他会显示我输入1个字符,全是英文的话就没问题,其他情况结果就不对
想问,这个是代码出了问题还是我的编程软件的问题
- #include <stdio.h>
- #define MAX 1024
- int main()
- {
- char str[MAX];
- char *target = str;
- char ch;
- int length = 0;
- printf("请输入一个字符串:");
- fgets(str, MAX, stdin);
- while (1)
- {
- ch = *target++;
- if (ch == '\0')
- {
- break;
- }
- if ((int)ch < 0)
- {
- target += 2;
- }
- length++;
- }
- printf("您总共输入了 %d 个字符!\n", length - 1);
- return 0;
- }
复制代码
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <wchar.h>
- #include <locale.h>
- #define MAX 1024
- int main()
- {
- char str[MAX];
- wchar_t wstr[MAX];
- // 设置本地化环境,支持多字节字符
- setlocale(LC_ALL, "");
- printf("请输入一个字符串:");
- fgets(str, MAX, stdin);
- // 将多字节字符串转换为宽字符字符串
- int len = mbstowcs(wstr, str, MAX);
- if (len == -1)
- {
- printf("字符串转换失败!\n");
- return 1;
- }
- // 计算宽字符字符串的长度(不包括换行符)
- int length = wcslen(wstr);
- if (str[strlen(str) - 1] == '\n')
- {
- length--;
- }
- printf("您总共输入了 %d 个字符!\n", length);
- return 0;
- }
复制代码
|
|