LLDB错误,我该怎么办?

时间:2015-08-10 15:25:04

标签: c xcode lldb

使用xcode 5.1.1,它在'printf(“digite o%ihorário:”,i + 1);'

有人对此有任何想法吗?我试图停用lldb,但它没有用。

#include <stdio.h>

int main (){

    struct hora {
        int h;
        int m;
        int s;
    };

    int i, a;

    struct hora lista[i];

    for (i = 0; i<5; ++i) {
        printf("digite o %i horário :",i+1);
        scanf("%i:%i:%i",&lista[i].h,&lista[i].m,&lista[i].s);
    }
    for (a=0; a<5; ++a){
        printf("o horário %i é %i:%i:%i", a+1,lista[a].h,lista[a].m,lista[a].s);
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您的代码显示undefined behaviour。,如语句

 struct hora lista[i];

您正在使用i单位化。

详细说明,i是一个自动存储类型的本地范围变量,它不是隐式初始化的。除非明确初始化,否则i的内容不确定。因此使用该值是UB。

您可能希望将其更改为

 struct hora lista[5];

使其正常。

也就是说,作为备注,C标准中不推荐使用int main(),使用int main(int argc, char * argv[])或至少使用int main(void)