这是我的密码。当我注释掉“luetut”变量时,它就工作了。
但是当我按如下方式编译时,当程序应该打印变量时,我会出现分段错误。这有什么意义当我尝试进行调试构建时,会出现一些非常奇怪的事情(这个和那个的多个定义)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct rakenne
{
    int luku;
    float liukuluku;
    char* mjono;
}   Rakenne;

int main(int argc, char *argv[])
{
    int luetut = 0;
    Rakenne palikka;
//  Rakenne palikka, *palikkaosoitin;
//  palikkaosoitin = &palikka;

//  while(luetut < 1)
//  {
        printf("Anna luku:\n");
        scanf("%d", &palikka.luku);
//  }   luetut = 0;
//  while(luetut < 1)
//  {
        printf("Anna liukuluku:\n");
        scanf("%f", &palikka.liukuluku);
//  }   luetut = 0;
    printf("Anna merkkijono:\n");
    scanf("%s", palikka.mjono);

    printf("%i\t%.3f\t%s\n", palikka.luku, palikka.liukuluku, palikka.mjono);

    return 0;
}

那么,我的gcc编译器是坏了还是出了什么问题?

最佳答案

scanf("%s", palikka.mjono);

你没有让mjono指向任何东西,所以给它写信当然是非法的-未定义的行为。这样做会导致不稳定的行为:程序“工作”或“失败”没有明显的原因。
那么,我的gcc编译器是坏了还是有什么问题
认为你正在使用的工具是问题所在是很难有建设性的。

10-06 16:05