| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 914 人关注过本帖
标题:各位朋友,发现一下错误吧
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
    char text[80]={'\0'};
    printf("enter a text: ");
    fgets(text,sizeof(text),stdin);
    int len=strlen(text);
    int i;
    for(i=0;i<len;i++)
    {
        if(text[i]==10) break;
        if(text[i]!=','&& text[i]!=' ') printf("%c",text[i]);
        else  if(text[i]==',') printf("\n");
    }
    return 0;
}
这段代码也存在一个bug  那就是如果一个单词之间含有空格  就被吃掉了  比如A  BC 会被输出ABC

DO IT YOURSELF !
2014-02-26 19:01
wu2782641803
Rank: 2
等 级:论坛游民
帖 子:65
专家分:46
注 册:2013-10-28
收藏
得分:0 
fgets(text,sizeof(text),stdin);看到这不知是什么意思??求帮助!!

2014-02-26 19:46
初出茅庐MM
Rank: 2
等 级:论坛游民
帖 子:62
专家分:11
注 册:2013-9-28
收藏
得分:0 
回复 10楼 wp231957
if(text[i]==10) break;   这条代码不能理解
2014-02-26 21:44
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用初出茅庐MM在2014-2-26 21:44:58的发言:

if(text==10) break;   这条代码不能理解

剔除回车 其实回车是13  10是换行  
但实际读到缓冲区的就是10

DO IT YOURSELF !
2014-02-26 21:51
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 13楼 初出茅庐MM
就是ASCII码的十进制数字。

想抽苏烟了。
2014-02-27 00:20
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 13楼 初出茅庐MM
曾经听说 授人以鱼,不如授之以渔。看了版主给你的代码,你知道自己哪里错了么??不知道自己哪里错了还不是不会,对于这道题目来说不知道有多少种解决方法。但是你自己想出来的就是属于你的思维,只是看了人家给的代码,你仍然不知道自己思维里是哪里错了。这对你有进步而言么?下面给你指出你代码的错误地方。
#include<stdio.h>
#include<string.h>
int main(void)
{
    char text[80];
    printf("enter a text: ");
    fgets(text,sizeof(text),stdin);
    int i=0;
    int n=strlen(text);
    for(i=0;i<n;i++)
    {
        if(text[i]==',')
        text[i]=' ';
         if(text[i]==10)
          {
             text[i]='\0';
              break;
          }
    }
    i=0;
    int j=0,k=0;
    char words[20][15];
    char word[15];
    while(1)
    {   if(text[i]==10) break;
        while(text[i]==' ')
            i++;
        if(text[i]=='\0')
            break;
        j=0;
        while(text[i]!=' '&&text[i]!='\0')// 你的代码核心问题就是出在这里!!!你用空格分开单词,但是你有没有想过最后一个单词呢?最后一个单词后面有空格么?
            word[j++]=text[i++];          //显然没有最后一个单词后面是'\0'
            word[j]='\0';
            strcpy(words[k++],word);
    }
    for(i=0;i<k;i++)
        printf("%s\n",words[i]);
    return 0;
}

想抽苏烟了。
2014-02-27 00:48
初出茅庐MM
Rank: 2
等 级:论坛游民
帖 子:62
专家分:11
注 册:2013-9-28
收藏
得分:0 
回复 12楼 wu2782641803
将输入的字符读入全部读入到字符串text中
2014-02-27 10:53
初出茅庐MM
Rank: 2
等 级:论坛游民
帖 子:62
专家分:11
注 册:2013-9-28
收藏
得分:0 
回复 14楼 wp231957
明白了
2014-02-27 11:11
初出茅庐MM
Rank: 2
等 级:论坛游民
帖 子:62
专家分:11
注 册:2013-9-28
收藏
得分:0 
回复 16楼 fl8962
我和我的小伙伴都很激动,       嘿嘿    你也玩dota
2014-02-27 11:11
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 19楼 初出茅庐MM
我好久不玩了,我在美国跟美国人玩没意思,玩国内的服务器延迟太高。有一年没玩过了。

想抽苏烟了。
2014-02-27 13:02
快速回复:各位朋友,发现一下错误吧
数据加载中...
 
   



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

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