| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 794 人关注过本帖
标题:一个简单的程序问题,求纠错
只看楼主 加入收藏
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:10 
一个简单的程序问题,求纠错
就是用连续用空格间隔输入多个字符串,然后再输出
eg:
input
abfjdjdnj kkgnwfne snffneinefw
output:
abfjdjdnj
kkgnwfne
snffneinefw

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char a[100][100];
    int i=0;
    int n,j;
    printf("input\n");
    while((scanf("%s",a[i]))!=EOF)
    i++;
    n=i-1;
    for(j=1;j<=n;j++)
    {
      printf("%s\n",a[j]);
      }
  system("pause");
      return 0;
      }

[ 本帖最后由 soulmate1023 于 2014-10-7 21:01 编辑 ]
搜索更多相关主题的帖子: system include return 字符串 
2014-10-07 21:00
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:4 
字符扫描的方式可能更适合吧

梦想拥有一台龙芯3A-4000
2014-10-07 22:28
hackrol
Rank: 4
来 自:世界和平组织
等 级:业余侠客
帖 子:62
专家分:267
注 册:2014-9-6
收藏
得分:4 
首先,你得输出是从a[1]开始的,好像不对,另外不能用%s,应该一个个字符的输出.%s只不遇到'\0'就会一直输出 ..还有一个要判断什么时候输出回车!具体的自己想想.
2014-10-07 22:40
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
收藏
得分:4 
以下是引用hackrol在2014-10-7 22:40:05的发言:

首先,你得输出是从a[1]开始的,好像不对,另外不能用%s,应该一个个字符的输出.%s只不遇到'\0'就会一直输出 ..还有一个要判断什么时候输出回车!具体的自己想想.



同上
2014-10-08 14:03
icanbestrong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:138
注 册:2013-3-13
收藏
得分:4 
因为回车不是EOF
2014-10-08 21:12
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 3 楼 hackrol
1.我把定义int i=0改成ing i=1了;这是我太粗心了;
2.但是scanf不是遇到空格就会认为字符串结束吗?那我这样输入:abcd efgh igkl 这样每输入一个字符串就加一个空格,就应该有3个字符串了呀,然后再回车输入ctrl+z手动输入EOF,再回车,就应该可以输出了呀?但程序没反应。
3.还有你说不能用%s输出,可是如果我用for循环输出三个字符串就可以呀,例如:
for(j=0;j<3;j++)
   {
      printf("%s\n",a[j]);
    }
大神们,求解呀?
2014-10-08 21:16
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 5 楼 icanbestrong
没有没有,我用ctrl+z输入的EOF
2014-10-08 21:17
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
#include <stdio.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
    const int OUT = 0;
    const int IN = 1;
    int state = OUT;
    int c;

    while ((c = getchar()) != EOF) {
        if (isspace(c)) {
            if (state == IN) {
                state = OUT;
                putchar('\n');
            }
        }
        else if (state == OUT) {
            state = IN;
            putchar(c);
        }
        else
            putchar(c);
    }
    return 0;
}

梦想拥有一台龙芯3A-4000
2014-10-09 04:09
右倾一世
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2014-4-10
收藏
得分:4 
说一下我个人的理解:
循环的条件,scanf的返回值是输入数据项的个数,你不能用它直接作为条件,要以输入
数据的末尾作为结束条件,你的这种方法很难找到你输入的最后一个字符,所以,为避免
问题复杂,建议换种方法;
2014-10-09 07:47
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 9 楼 右倾一世
你说的也挺有道理的,我想想看,谢谢
2014-10-09 21:20
快速回复:一个简单的程序问题,求纠错
数据加载中...
 
   



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

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