代码输出重复此 if else 部分的 else 部分

问题描述 投票:0回答:1

Soo,每当我运行此代码时,它只会重复 if else 块的最后一部分。它只重复输出一个 printf。

我确实使用了 sscanf 来检查是否可以并防止缓冲区溢出。

代码如下:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <time.h>

void anongArawNgayon()
{
    time_t now = time(NULL);
    char* anongAraw = ctime(&now);
    printf("%s", anongAraw);
}

int scanner(const char *data, char *buffer, size_t buflen)
{
    char format[30];
    if (buflen == 0)
        return 0;
    snprintf(format, sizeof(format), "%%%ds", (int)(buflen-1));
    return sscanf(data, format, buffer);
}

int main()
{
    char input[30];
    bool tuloyLang = true;

    anongArawNgayon();
    while (tuloyLang)
    {
        printf("\n");
        printf("di makapagdrive si papa, tuloy ba bukas?\n");
        sscanf("%29s", input, sizeof(input));

        if(strcmp(input, "tuloy")==0)
        {
            for (int i=0; i=15; i++)
            {
                printf("Okay magbihis na kayo\n");
            }
            printf("pero si adriaan ang magdridrive");
        }
        else if(strcmp(input, "hindi")==0)
        {
            for (int i=0; i=15; i++)
            {
                printf("Patay ah");
            }
            printf("commute na lang");
        }
        else if(strcmp(input, "sira")==0)
        {
            break;
        }
        else
        {
            printf("ano??");
        }
    }
    return 0;
}

在这种情况下我确实使用 Sublime Text 作为编译器。我尝试用涡轮增压器做同样的事情。我在另一台笔记本电脑上尝试使用 vsc,也发生了同样的事情。

c if-statement scanf
1个回答
0
投票
int main()
{
    char input[30];
    bool tuloyLang = true;

    anongArawNgayon();
    while (tuloyLang)
    {
        printf("\n");
        printf("di makapagdrive si papa, tuloy ba bukas?\n");
        sscanf("%29s", input, sizeof(input));

此时,

input
是一个未初始化的数组,并且您对
sscanf
的使用是不正确的。为什么您期望
input
包含
"tuloy"
、'
"hindi"
"sira"

您可能想要使用

scanf
或更好的
fgets
将输入读取到
input
然后 检查
input
的值。

© www.soinside.com 2019 - 2024. All rights reserved.