scanf
Jag har aldrig programmerat förut så kommer säkert ställa många dumma frågor. Men här är ett exempel på scanf
#include <stdio.h>
int main()
{
int samplen = 32;
float kelvin = 150;
char label[32];
scanf("%d %f %s", &samplen, &kelvin, label);
}
men är det meningen att den här funktionen(?) ska utföra något? Det händer inget när jag kör den.
Den fyller i data i samplen, kelvin och label. Sedan får du göra något med dem.
Funktion stämmer.
Vi kan inte svara på vad funktionen main()
är menat att göra. Vad tycker du själv? Är det en uppgift du ska lösa?
När programmet startas så körs funktionen main()
och du kan då mata in tre värden separerade med mellanslag. Programmet gör sedan ingenting mer utan avslutas. Om du vill att programmet ska göra något mer behöver du skriva mer kod.
Till exempel kan du skriva ut de värden som matades in så att du ser att något händer:
#include <stdio.h>
int main()
{
int samplen = 32;
float kelvin = 150;
char label[32];
scanf("%d %f %s", &samplen, &kelvin, label);
printf("%d %f %s", samplen, kelvin, label);
}
Om jag skriver som ovan så händer inget, men tar jag bort %s och label så skriver den 32 150.000
alltså
#include <stdio.h>
int main()
{
int samplen = 32;
float kelvin = 150;
char label[32];
scanf("%d %f %s", &samplen, &kelvin, label);
printf("%d %f", samplen, kelvin);
}
32 150.00000
Det är ingen uppgift det stod bara exempel på scanf.
char label[32] vad står det för?
scanf läser in text och tolkar den enligt specifikationen du angett.
När du kör programmet ska programmet stanna på den raden så du kan mata in en rad med de sakerna. Var du kan mata in beror på vilken utvecklingsmiljö du kör programmet i men meningen är att scanf ska läsa in raden. Om det inte funkar är det något med din miljö som trasslar eller som du inte förstått. Det har inget med själva programmeringen att göra men du bör få det att funka först.
Visa spoiler
"%d %f %s" betyder att den förväntar sig ett heltal (d), ett decimaltal (f) och sen text (s).
scanf() lagrar sen de 3 sakerna i dina 3 variabler. På nästa rad skriver programmet ut värdena på variablerna, dvs de värden som raden innan läste in.
char label[32]
Skapar variabeln "label" som kan lagra max 32 tecken
.
Jag rekommenderar att du aldrig (nej, aldrig) använder scanf, utan i stället läser in en rad i taget och använder sscanf på den.
Lindehaven skrev:Vi kan inte svara på vad funktionen
main()
är menat att göra. Vad tycker du själv? Är det en uppgift du ska lösa?När programmet startas så körs funktionen
main()
och du kan då mata in tre värden separerade med mellanslag. Programmet gör sedan ingenting mer utan avslutas. Om du vill att programmet ska göra något mer behöver du skriva mer kod.Till exempel kan du skriva ut de värden som matades in så att du ser att något händer:
#include <stdio.h> int main() { int samplen = 32; float kelvin = 150; char label[32]; scanf("%d %f %s", &samplen, &kelvin, label); printf("%d %f %s", samplen, kelvin, label); }
Inget fel på koden ovan given av Lindehaven.
char label[32] kan du se som en "sträng" som är av längd 32. Men om jag inte minns helt fel så är den sista karaktären en 0:a, detta eftersom den är null terminated, dock så måste den inte vara det men i just detta fallet så är jag rätt säker på att den är de.
Tillägg: 10 nov 2021 21:53
Det kan vara en bra idé att läsa om pekare, annars kan det verka konstigt varför du måste skriva &variabel. Om du är helt ny så kan det dock vara väldigt förvirrande med pekare, men det är något du inte kommer kunna undvika i C.