统计中文字符以及中英文混合字符的程序
本帖最后由 annnnnnnnnovice 于 2022-9-8 10:40 编辑系统环境 win10, 编码gbk
#include <stdio.h>
#define MAX 1024
int main()
{
// 设计一个可以统计中文字符以及中英文混合字符的程序
char str;
char *p = str;
int count = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while(1)
{
if(*p == '\0')
{
break;
}
// 这里答案用了强转,我的这个直接比较会不会有问题,哪个更好一点
if(*p < 0)
{
p += 1;
}
p += 1;
count++;
}
printf("您总共输入了%d个字符", count - 1);
return 0;
} 你的问题的到底是什么? 编程追风梦 发表于 2022-9-8 11:14
你的问题的到底是什么?
在代码里面写着 “//” 那里{:10_266:} 这没关系,强转,眼自动转目的一样。 本帖最后由 jackz007 于 2022-9-8 14:03 编辑
这些代码
while(1)
{
if(*p == '\0')
{
break;
}
// 这里答案用了强转,我的这个直接比较会不会有问题,哪个更好一点
完全可以改为:
while(* p)
{
// 这里答案用了强转,我的这个直接比较会不会有问题,哪个更好一点
当然了,其它的代码可以照旧。
下面是我修改的简化版本
#include <stdio.h>
#define MAX 1024
int main(void)
{
// 设计一个可以统计中文字符以及中英文混合字符的程序
char str ;
int i , count ;
printf("请输入一个字符串:") ;
fgets(str, MAX, stdin) ;
for(count = i = 0 ; str ; count ++ , i ++) if(str < 0) i ++ ;
printf("您总共输入了 %d 个字符\n" , count - 1) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
请输入一个字符串:我喜欢 FishC!
您总共输入了 10 个字符
D:\\C> 你是代码没全部写出来么?
if(*p < 0)
{
p += 1;
}
这一段什么作用,感觉要不要都可运行 jackz007 发表于 2022-9-8 13:53
这些代码
完全可以改为:
牛哇,get了一个新知识,一直不知道‘\0’编码表里是0,能顺便问一下你的代码为什么不用指针吗{:10_254:} 本帖最后由 jackz007 于 2022-9-9 16:07 编辑
annnnnnnnnovice 发表于 2022-9-9 16:00
牛哇,get了一个新知识,一直不知道‘\0’编码表里是0,能顺便问一下你的代码为什么不用指针吗
指针版:
#include <stdio.h>
#define MAX 1024
int main(void)
{
// 设计一个可以统计中文字符以及中英文混合字符的程序
char str , * p ;
int count ;
printf("请输入一个字符串:") ;
fgets(str , MAX , stdin) ;
for(count = 0 , p = str ; * p ; count ++ , p ++) if(* p < 0) p ++ ;
printf("您总共输入了 %d 个字符\n" , count - 1) ;
}
p 和 str 都是指针,只是 str 是常量指针,不可以接受赋值,p 是指针变量,可以接受赋值,二者用法相同。
p 指向 str 后,p 就是 str,例如,p 就是 str, annnnnnnnnovice 发表于 2022-9-9 16:00
牛哇,get了一个新知识,一直不知道‘\0’编码表里是0,能顺便问一下你的代码为什么不用指针吗
解决问题的方法有多种,完全看自己吧,你可以用多种方法来做 jackz007 发表于 2022-9-9 16:04
指针版:
p 和 str 都是指针,只是 str 是常量指针,不可以接受赋值,p 是指针变量 ...
{:10_275:}谢谢 桃花飞舞 发表于 2022-9-9 20:35
解决问题的方法有多种,完全看自己吧,你可以用多种方法来做
好的,谢谢{:10_275:}
页:
[1]