鱼C论坛

 找回密码
 立即注册
查看: 4164|回复: 13

字符与字符串

[复制链接]
发表于 2013-11-16 18:35:34 | 显示全部楼层 |阅读模式
5鱼币

  1. #include <stdio.h>

  2. void main()
  3. {
  4. int a[100];
  5. int i,n;
  6. printf("input char: ");
  7. for ( i=0; i<100; i++ )
  8. {
  9.        scanf("%c",&a[i]);
  10.        printf("%c\n",a[i]);
  11. if ( getchar() == '\n')
  12.     {
  13.         printf("%d\n",i);
  14.         break;
  15.      }
  16. }
  17. }       //这代码自己也不知道怎么写出来的,运行结果不是预定的一样,不知道怎么写。
复制代码

小甲鱼,第五章016课时里的计算输入字符串的个数,那个答案好像错了。getchar()只能得到一个字符,gets()才能得到字符串。但是怎样才能计算得到的字符串的个数呢?求解,想不到。

最佳答案

查看完整内容

你就是想让用户输入输入一串字符串然后照样输出一遍在计算出字符的个数是吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 18:35:35 | 显示全部楼层
你就是想让用户输入输入一串字符串然后照样输出一遍在计算出字符的个数是吧
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         char a;
  5.         int n = 0;
  6.         printf("input char: ");
  7.         while((a = getchar())!='\n')
  8.         {
  9.                 printf("%c",a);
  10.                 n++;
  11.         }
  12.         printf("\n");
  13.         printf("该字符串有%d个字符\n",n);
  14.         return 0;
  15. }  
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 18:46:41 | 显示全部楼层
gets()成功一次就意味着得到一个字符串,最终gets()返回NULL一维着用户输入了结束符EOF
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 18:46:44 | 显示全部楼层
gets()成功一次就意味着得到一个字符串,最终gets()返回NULL一维着用户输入了结束符EOF
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-16 19:37:43 | 显示全部楼层

可怎么得到它的字符个数呢,,刚刚又研究了一下,还是不会。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-11-16 20:15:57 | 显示全部楼层
  1. #include <string.h>
  2. #include <stdio.h>

  3. int main(void) {
  4.         int total = 0;
  5.         char tmp[200];
  6.         puts("input some strings");
  7.         while( gets(tmp) != NULL ) ++total;
  8.         printf("input %d strings\n",total);
  9.         return 0;
  10. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-16 22:09:41 | 显示全部楼层

这个我测试了一下,好像不行。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-16 22:10:24 | 显示全部楼层
这个是我测试的结果。
test.JPG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-16 22:21:20 | 显示全部楼层



这个是我上面帖的代码测试的结果。。不过它是隔一个字符打印一个。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-16 22:22:00 | 显示全部楼层
18326638710 发表于 2013-11-16 22:21
这个是我上面帖的代码测试的结果。。不过它是隔一个字符打印一个。。

test1.JPG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-16 22:23:48 | 显示全部楼层

求解??????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-11-17 10:43:40 | 显示全部楼层
[b]在一些封装好的字符串函数里面,很多都会调用到getchar这个来从键盘获得标准的输入,如果是从文件获得输入是用fgetc这个函数。
关于从键盘计数输入字符串时,我觉得11楼牡丹花做的不错,但是要注意两点,这个函数最好写成子函数,还有就是需要加一些终止条件。其他的都很好。我也是菜鸟,互相学习学习。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-17 13:15:36 | 显示全部楼层
cainiao367 发表于 2013-11-17 10:43
在一些封装好的字符串函数里面,很多都会调用到getchar这个来从键盘获得标准的输入,如果是从文件获得输入是 ...

嗯嗯,谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-17 15:24:14 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-11-16 18:35
你就是想让用户输入输入一串字符串然后照样输出一遍在计算出字符的个数是吧

我还有一点疑惑??
为什么在while 语句表达式中不能用getchar(),而必须要用(a=getchar())。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-11 03:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表