Как распределять изменчивый символ?

Как делать, что переменная idn возьмите стоимость id? и напечатайте меня idn?

Это мой код:

int main() {
    //variables
    int n, peso, cilin, anio, origen, i, m, p;
    float millas, desp, acelera, cf, millasT, pesoT, rendi, tanke, tankev;
    char id[10], idn[10];
    FILE *in;
    for(i = 1; i <= n; i++) {
        fscanf(in,"%s %f %d %f %f %d %f %d %d",
               id, &millas, &cilin, &desp, &cf, &peso, &acelera, &anio, &origen);
        if ((desp > 0) && (millas > 0)) {
            tanke = (desp / millas);
            if(tanke > tankev) {
                tankev = tanke;
                idn[10] = id[10]; //variables id
            }
        }
        if (anio == 80) {
            millasT = millas + millasT;
            m=m+1;
        }
        if(anio == 77) {
            pesoT=peso + pesoT;
            p = p + 1;
        }
        if(millas > rendi) {
            rendi = millas;
        }
    }
    pesoT = pesoT / p;
    printf("%.2fn", pesoT);

    millasT = millasT / m;
    printf("%.3fn", millasT);

    printf("%.2fn", rendi);
    printf(" %sn %.2fn", idn, tankev);

    return 0;
}
6
задан 29.03.2017, 19:38
3 ответа

Переменные, которые ты хочешь распределить, не типа символ, - arrays символов размера 10 (char id[10],idn[10];). В C, чтобы копировать с одного array до другого, не достаточно распределять, нужно копировать память и это было бы сделано с функциями как memcpy, strcpy, strncpy или сходные.

Если ты хочешь скопировать контент переменной id в idn используя memcpy, синтаксис memcpy(destino, origen, tamaño), на которое ты был бы должен заменять ассигнование, которое ты имеешь в коде чем-то как это:

memcpy(idn, id, 10);

Это копирует 10 байт (размер id и idn) с ячейки запоминающего устройства, указанной в id в ячейку запоминающего устройства, указанную из-за idn.

1
ответ дан 24.11.2019, 14:35

когда в переменную ты помещаешь ему квадратные скобки [] (Эдж: miVar [5]) ты сообщаешь, что у этой переменной будет длина 5 символов. Я думаю, что стоимость ты был бы должен распределять их ему потом (а именно, оставлять в мишени []) и потом реализовывать ассигнование посредством функции или другую предопределенную стоимость!

0
ответ дан 24.11.2019, 14:35

Ты не инициализировал n, должен инициализировать n, чтобы мочь осуществлять цикл.

Чтобы распределять единственный характер в этом цикле он был бы должен класться так:

idn[i] = id[i];

Для этого ты должен осуществлять ввод единственного характера в scanf в каждом цикле, тогда в этом положении переменной в scanf, будь должен соответствовать так:

scanf (in,"%c",.., &id[i],..);

Ты можешь копировать полную цепь после цикла, вне того же самого. Чтобы копировать стоимость одного массива до другой, они должны быть распределенными от каждого элемента до каждого элемента, или для char [] используя функции как:

char *strcpy(char *dest, const char *src)

С этим кодом ты повторяешь n разы ввод клавиатуры в id, в каждом цикле sobrescribe стоимость array характеров пойдите, и ты это не применяешь в вышеупомянутом цикле перед тем, как возвращаться в sobreescribirlo в следующем цикле. Таким образом, сохраняли Ваш контент в одиноком файле, сохраняли бы последнюю принятую в доме цепь, теряясь предыдущие.

0
ответ дан 24.11.2019, 14:35

Ассигнование между векторами тип символ не правилен, ты должен использовать уже прокомментированные функции, или также эта:

sprintf(idn, "%s", id);
0
ответ дан 03.12.2019, 22:37

Теги

Похожие вопросы