| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 925 人关注过本帖
标题:大家看看这个程序,怎么跳不出do..while循环
取消只看楼主 加入收藏
_Dennis_h
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-3-6
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:5 
大家看看这个程序,怎么跳不出do..while循环
程序代码:
#include <stdio.h>
//#include <ctype.h>
#include <stdlib.h>
#define _STDC_WANT_LIB_EXT1_ 1
#define max_len 2


int main (void)
{
    char xy[max_len] = {'0'};
    int test = 0;
    long int xx = 0;
    printf("\nThis progarm is build a Mult-sheet.");
    
    do
    {
        test = 0;
        
        printf("\nPlase input a number for build the Mul-sheet : ");
        fflush(stdin);
        int ret_scan = scanf_s("%c", xy, sizeof(xy));
        if(ret_scan == EOF)
        {
            printf("Error reading,enter overflow!!\n");
            return 1;
        }

        for(int i = 0; i<max_len; ++i)
        {
            if(xy[i]<'0' || xy[i]>'9')
            {
               test = 1;
               break;
               //printf("xy[%d] = %c\n", i,xy[i]);    
            }

            //printf("xy[%d] = %c\n", i,xy[i]);    
        }

    }
    while(test == 1);
    //while(isalpha(xy) || isspace(xy));

    xx = atol(xy);

    //printf(" xx = %ld\n", xx);

    for(int i = 1; i <= xx ; ++i)
    {
        for(int j = 1; j <= xx; ++j)
        {
            printf("\t%d", i*j);
        }
        printf("\n\n");
    }
    return 0;

}



我用test做测试标志,想通过for()循环检查char xy[]中每一个字符是否是数字。怎么do...while循环出不来了呢?而且我用scanf_s()函数规定最多输入两位字符,但是就是不起作用,为何?
搜索更多相关主题的帖子: include 
2015-03-18 20:33
_Dennis_h
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-3-6
收藏
得分:0 
以下是引用yangcaifei在2015-3-18 22:56:52的发言:

undefined reference to `scanf_s'

scanf_s()函数是scanf()函数的可选函数,是它的安全版本,是C11标准。我在函数开头声明了 需要使用可选函数。
2015-03-19 11:10
_Dennis_h
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-3-6
收藏
得分:0 
以下是引用lovegh在2015-3-18 23:04:46的发言:

为毛都不自己调试呢,你肯定没调试过,一直看代码==。

我用的是Pellse C编译器,调试的时候都是汇编语句。
2015-03-19 11:12
_Dennis_h
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-3-6
收藏
得分:0 
以下是引用longwu9t在2015-3-19 12:22:02的发言:

由于你定义的xy是字符数组(字符串)

scanf_s("%c", xy, sizeof(xy));

%c 应改成 %s

这样只是解决了scanf_s函数规定输入字符多少的问题,%s可以,最多输入sizeof(xy)-1个字符,但是我在书中看到%c也可以啊,但是为何我这里不行?我主要想解决为何跳不出do...while循环。你的Pellse C 怎么Debug的?上次你给的图没看懂。。。
2015-03-19 12:37
_Dennis_h
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-3-6
收藏
得分:0 
以下是引用longwu9t在2015-3-19 14:13:17的发言:









我这是用了插件 方便DEBUG
不用插件 pellesc 也照样DEBUG
关键是工程选项里把DEBUG开关打开

因为pellesc默认建立的项目是关闭DEBUG的

我的是64位的win7,在我的Pellse C文件下Addins文件里是空的,啥都没有!!咋办?
2015-03-19 15:27
_Dennis_h
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-3-6
收藏
得分:0 
以下是引用longwu9t在2015-3-19 15:30:52的发言:

去网上下呗 看我签名 下完了自己编译
或者你到
http://www.
自行搜索

我下你给的百度云盘里的Pellse C,那些add、exam、libs、wzd文件夹就是你说的插件吗?那些东西怎么用呢?
2015-03-19 17:46
快速回复:大家看看这个程序,怎么跳不出do..while循环
数据加载中...
 
   



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

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