|
发表于 2024-7-26 15:55:32
|
显示全部楼层
- #include<stdio.h>
- #define MAX 1024
- int main()
- {
- unsigned char str[MAX] ;
- int m ;
- printf("请输入一个字符串 : ") ;
- fgets((char *) str , MAX , stdin) ;
- for(m = 0 ; str[m] ; m ++) {
- if(m) printf(" ") ;
- printf("%02x" , str[m]) ;
- }
- printf("\n") ;
- printf("count = %d\n" , m) ;
- }
复制代码
编译、运行实况:
- D:\[exercise]\C>g++ -o x x.c
- D:\[exercise]\C>x
- 请输入一个字符串 : I Love fishC
- 49 20 4c 6f 76 65 20 66 69 73 68 43 0a
- count = 13
- D:\[exercise]\C>
复制代码
这个代码与楼主的代码功能基本一样,不同之处是在输出统计结果之前,添加了打印输出所键入每一个字符的十六进制 ASCII 编码的功能。
运行这个代码可以发现,每次的统计字符数确实比键入字符数量多出1个,可是,每次的最后一个字符的 ASCII 编码值一定是 0x0a,没错,是回车字符 '\n' 的 ASCII 编码,于是,可以得出结论,通过 fget() 从键盘获取到的字符串一定会比实际输入多出一个 '\n' 字符,这个字符一定位于字符串的末尾。 |
|