首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回类型为0吗?或者这里发生了什么?

返回类型为0吗?或者这里发生了什么?
EN

Stack Overflow用户
提问于 2016-03-07 04:46:05
回答 2查看 324关注 0票数 0
代码语言:javascript
运行
复制
#include <stdio.h>
#include <ctype.h>

void printSquare( char c, int size);

int main(){

    int userNum;
    char userChar;

    printf("Enter a character : \n");
    scanf("%s",&userChar);

    while(isalpha(userChar) == 0){
        printf("Enter a character : \n");
        scanf("%s",&userChar);
    }

    printf("Enter a number(3-10) : \n");
    scanf("%d",&userNum);

    while(isdigit(userNum) == 0){
        printf("Enter a number(3-10) : \n");
        scanf("%d",&userNum);
    }   

    printSquare(userChar,userNum);

}

/*printSquare函数从用户获得一个字符和数字,用户输入的数字是打印输出的字母和行数。

因此,如果用户输入'a‘和'3’输出是abc \n bcd \n cde,则主要在验证方面有问题。使用函数isalpha()检查返回值是否为0,如果是,则继续提示用户使用char,我试图对is位数()执行相同的操作,但是它进入了infite循环,以前有人见过它吗,它与缓冲区或stdin有关吗?*/

代码语言:javascript
运行
复制
void printSquare( char c, int size){
    char letters[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    int initChar;

    for (int i = 0; i < sizeof(letters)/sizeof(letters[i]); i++)
    {
        if (c == letters[i])
        {
            initChar = i;
            printf("FOUND IT - > %c\n",letters[i]);
        }
    }

    for (int i = 0; i < size; i++)
    {
        for (int j = initChar; j <  initChar + size; j++)
        {
            printf("%c",letters[j % 27] );
        }
        printf("\n");
        initChar+=1;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-07 04:52:09

代码中有未定义的行为。您告诉scanf读取字符串,但只提供指向单个字符的指针。非空字符串至少是两个字符:字符串中的实际字符加上字符串终止符。

scanf写入字符串终止符时,它将在内存中的某个不应该写入的地方写入。

若要读取单个字符,应使用"%c"格式。有关格式的更多信息,请参见 (and family) reference

票数 3
EN

Stack Overflow用户

发布于 2016-03-07 04:51:45

isdigit检查您的输入是否为char'0''1'、.

它不检查输入是否为integers。请注意,char '0'int 0不同。

另外,您应该使用scanf("%c",&userChar);而不是scanf("%s",&userChar);,因为userChar是一个字符,而不是字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35836324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档