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,也发生了同样的事情。
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
的值。