| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 270 人关注过本帖
标题:输入字符并统计个数,为什么字符个数总是多一倍?
只看楼主 收藏
花脸
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:324
专家分:167
注 册:2017-1-4
结帖率:97.87%
  已结贴   问题点数:20  回复次数:13   
输入字符并统计个数,为什么字符个数总是多一倍?
#include<stdio.h>/**/
#include<stdlib.h>
int main()
{
    char a,name[10];
    FILE *fp;
    int num=0;
    printf("please input filename:\n");
    gets(name);
    if((fp=fopen(name,"w"))==NULL)
    {
        printf("file open error!\n");
        exit(0);
    }
     printf("please input char:\n");
     a=getchar();
     while(a!='#')
     {   
         fputc(a,fp);
         num++;                    //记录字符的个数
         a=getchar();
     }
     fprintf(fp,"%d",num);
     fclose(fp);
     return 0;
}
搜索更多相关主题的帖子: file  统计  please  include  
2017-06-19 22:08
renkejun1942
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:不是这样
等 级:版主
威 望:13
帖 子:1310
专家分:3586
注 册:2016-12-1
  得分:4 
没有编译,但从代码上看并没有问题。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-19 22:12
花脸
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:324
专家分:167
注 册:2017-1-4
  得分:0 
回复 2楼 renkejun1942
  多一倍
附件: 您没有浏览附件的权限,请 登录注册
2017-06-19 22:29
renkejun1942
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:不是这样
等 级:版主
威 望:13
帖 子:1310
专家分:3586
注 册:2016-12-1
  得分:0 
回复 3楼 花脸
这个问题说的次数太多,甚至论坛上遍地都是这个问题,我都不想说了:回车!回车!回车!

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-19 22:37
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:354
帖 子:12059
专家分:47699
注 册:2012-10-18
  得分:4 
是不是把回车都算了

DO IT YOURSELF !
2017-06-19 22:37
花脸
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:324
专家分:167
注 册:2017-1-4
  得分:0 
回复 5楼 wp231957
fputc(a,fp);
         num++;                    //记录字符的个数
         a=getchar();      //  没有吧      这是接收下一个输入的字符的

     
2017-06-19 22:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:99
帖 子:3718
专家分:13882
注 册:2014-5-20
  得分:4 
getchar()输入以'\n'结束,输入's'+'\n'就两个字符了。
这样看看:
#include <stdio.h>
main()
{
    int i=1, ch=getchar();
    printf("输入的第%d个字符码:%d\n", i, ch);
    if (ch == '\n')
        return;
    while ((ch=getchar())!='\n' && ch!=EOF)
    {
        ++i;
        printf("输入的第%d个字符码:%d\n", i, ch);
    }
    ++i;
    printf("输入的第%d个字符码:%d\n", i, ch);
}
试输入:
s回车

abcd回车
2017-06-20 00:14
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:121
专家分:113
注 册:2017-3-29
  得分:4 
回车在getchar()也算一个字符的,所以只要按了回车就是一个字符
2017-06-20 00:14
花脸
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:324
专家分:167
注 册:2017-1-4
  得分:0 
回复 7楼 吹水佬
这个是怎么消回车的 没看懂
2017-06-20 16:55
花脸
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:324
专家分:167
注 册:2017-1-4
  得分:0 
回复 8楼 peng880610
2017-06-20 16:55









关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054358 second(s), 8 queries.
Copyright©2004-2017, BCCN.NET, All Rights Reserved