C和C++中未定义,未指定和实现定义的行为有什么区别?
c c++ undefined-behavior unspecified-behavior implementation-defined-behavior
给出以下代码:
#include <stdio.h>
int main()
{
int testcase;
char arr[30];
int f,F,m;
scanf("%d",&testcase);
while(testcase--)
{
printf("Enter the string\n");
fgets(arr,20,stdin);
printf("Enter a character\n");
F=getchar();
while((f=getchar())!=EOF && f!='\n')
;
putchar(F);
printf("\n");
printf("Enter a number\n");
scanf("%d",&m);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望用户输入一个字符串、一个字符和一个数字,直到测试用例变为零。
我的疑虑/疑问:
1.用户无法输入字符串。看来fgets不行。为什么?
2.如果我使用scanf而不是fgets,则getchar无法正常工作,即我在其中输入的任何字符都putchar作为新行。为什么?
谢谢您的帮助。
程序说明: - 我编写了一个程序,该程序从用户输入无限的字符输入.时间并打印输入的输入.这是程序
#include<stdio.h>
int main()
{
int i=1;
char a;
while (i!=0)
{
printf("Enter %d th value\n",i);
scanf("%c",&a);
printf("Entered input is %c\n",a);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
上述方案的产出: -
Enter 1 th value
q
Entered input is q
Enter 2 th value
Entered input is
Enter 3 th value
r
Entered input is r
Enter 4 th value
Entered input is
Enter 5 th value
g
Entered input is g
Enter 6 th value
Entered input is
Enter 7 th value …Run Code Online (Sandbox Code Playgroud)