C显示两者(简单if-then)

Ast*_*rix -3 c

我一定是在失去理智:-(.我不确定,但如果输入2,我就会得到肯定而且没有显示...

int main(void)
{
    int input;
    char yes[3] = "yes";
    char no[2] = "no";
    printf("Are you ok? Type in 1 for yes or 2 for no.\n");
    scanf("%d", &input);

    if (input == 1)
       printf("%s, I am\n.", yes);
    else
       printf("%s, I am not\n.", no);
    getchar();
    getchar();
}
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 6

char yes[3] = "yes";
Run Code Online (Sandbox Code Playgroud)

您需要4数组中的字符.

 char no[2] = "no";
Run Code Online (Sandbox Code Playgroud)

您需要3数组中的字符.

否则C将不会null终止您的数组.

更好的方法是在构建时自动处理大小:

char no[] = "no";
char yes[] = "yes";
Run Code Online (Sandbox Code Playgroud)

  • 是的,并且作为其静态分配,在大多数情况下,它们将被包含在内存中的"yesno",而不是"yes\0no \n",这就是为什么他得到yes而没有显示. (2认同)