| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2077 人关注过本帖
标题:一个不知长度的数组,用devc++怎么跑不出来
只看楼主 加入收藏
郭郭果果
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-3-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
一个不知长度的数组,用devc++怎么跑不出来
#include <stdio.h>
#include <stdlib.h>
#define MAXNUMBER 256
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    char buf[MAXNUMBER];
    int m,i=0,j=0;
    printf("请输入整数m:\n");
    scanf("%d",&m);
    printf("请输入字符:\n");
    do{
        scanf("%s",&buf[i]);
        i++;
    }while(buf[i-1]!='\n');
     printf("%s\n",buf);
     return 0;
}


这个哪里有问题呢?
搜索更多相关主题的帖子: 长度 数组 vc++ int printf 
2018-03-14 21:34
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:5 
回复 楼主 郭郭果果
int main(int argc, char *argv[]) {
    char buf[MAXNUMBER];
    int m,i=0,j=0;
    printf("请输入整数m:\n");
    scanf("%d",&m);
    printf("请输入字符:\n");
    do{
        scanf("%s",&buf[i]);//改为%c
        i++;
    }while(buf[i-1]!='\n');
     printf("%s\n",buf);
     return 0  //中文状态下的分号。改为英文输入法状态写
}

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-03-15 02:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
//scanf("%s",&buf[i]);
scanf("%c",&buf[i]);
2018-03-15 05:10
郭郭果果
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-3-13
收藏
得分:0 
回复 2楼 lanke711
但是一改过之后就会从输入数字直接跑完程序,不会有输入字符那步了
2018-03-16 20:40
郭郭果果
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-3-13
收藏
得分:0 
回复 3楼 吹水佬
但是一改过之后就会从输入数字直接跑完程序,不会有输入字符那步了
2018-03-16 20:40
yuandefeng
Rank: 4
等 级:业余侠客
威 望:3
帖 子:51
专家分:216
注 册:2017-11-28
收藏
得分:5 
回复 5楼 郭郭果果
第一个scanf把换行符也带到缓存中了,可以加一个舍去换行符的代码。
2018-03-16 21:37
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
收藏
得分:5 
scanf在使用%c时就会有这个问题
int main(int argc, char *argv[]) {
    char buf[MAXNUMBER];
    int m,i=0,j=0;
    printf("请输入整数m:\n");
    scanf("%d",&m);
    getchar();    //吃掉一次'\n'
    printf("请输入字符:\n");
    do{
        scanf("%c",&buf[i]);    //改成%c
        i++;
    }while(buf[i-1]!='\n');
     buf[i-1]='\0';        //把回车的那个字符替换成空字符。
     printf("%s\n",buf);
     return 0;              //换成英文分号
}                            //整个程序m和j没起到作用
2018-03-16 21:38
郭郭果果
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-3-13
收藏
得分:0 
回复 7楼 李晨经纪人
好的,谢谢
2018-03-18 23:18
快速回复:一个不知长度的数组,用devc++怎么跑不出来
数据加载中...
 
   



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

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