Diskuze: Problém s načítaním znakov do poľa
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ukončíš to číslicou 0 alebo akoukoľvek nečíselnou hodnotou.
#include <stdio.h>
int main(void)
{
float input[500];
float number;
int i;
while(scanf("%f", &number) == 1){
if(number != 0){
input[i++] = number;
}
else {
break;
}
}
return 0;
}
Vidím, že podľa podmienky chceš ukončiť načítavanie aj ak sa zadá len prázdny riadok, scanf však biele znaky ignoruje preto to môžeš spraviť napr. takto: pomocou fgets si načítaš vstup ako string do buffera, následne skontroluješ či sa nenačítal len prázdny riadok, ak nie pomocou sscanf si načítaš formátovaný vstup do pomocnej premennej number a ak sa do nej načítalo naozaj číslo tak už len skontroluješ či to nie je 0.
#include <stdio.h>
#include <stdlib.h>
#include <string>
int main(){
float input[500];
float number;
int i = 0;
char buffer[100];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
if (strcmp(buffer, "\n") != 0 && sscanf(buffer, "%f", &number) == 1) {
if (number != 0) {
input[i++] = number;
}
else
break;
}
else
break;
}
return 0;
}
do {
if ((scanf("%f", &number) != 1) || (!number)) break;
else input[i++] = number;
} while (i < 500);
Zobrazeno 4 zpráv z 4.