mboost-dp1
hvad er fejlen i 'C' koden?
- Forside
- ⟨
- Forum
- ⟨
- Programmering
#11
Godt nok derefererer du C-variablen, men en strengliteral er stadigvæk en char*, så den sammenligner en char (som kan opfattes som heltal) med en char*.
Brug strcmp til at sammenligne strenge i stedet for at dereferere dem, dvs. if (strcmp(C, "volt")==0) { ... }.
Godt nok derefererer du C-variablen, men en strengliteral er stadigvæk en char*, så den sammenligner en char (som kan opfattes som heltal) med en char*.
Brug strcmp til at sammenligne strenge i stedet for at dereferere dem, dvs. if (strcmp(C, "volt")==0) { ... }.
Spiderboy (12) skrev:#11
Godt nok derefererer du C-variablen, men en strengliteral er stadigvæk en char*, så den sammenligner en char (som kan opfattes som heltal) med en char*.
Brug strcmp til at sammenligne strenge i stedet for at dereferere dem, dvs. if (strcmp(C, "volt")==0) { ... }.
hvorfor skal det være ==0, er det fordi der ikke er nogen forskelle?
qw_freak (14) skrev:nej? hvad er det?
Et website, der er beregnet til at paste kildekode ind og kan linkes til, f.eks. til når man skal have have programmeringshjælp i et forum.
qw_freak (15) skrev:hvorfor skal det være ==0, er det fordi der ikke er nogen forskelle?
Fordi den sammenligner om den ene streng "er større" end den anden. Kan f.eks. bruges til sortering. Hvis de er ens, giver den 0.
qw_freak (16) skrev:hvad er så fejlen her???
http://pastebin.com/Hmywh4ix
Fordi din ID er defineret com char ID[20], dvs. en array af 20 chars.
Når du skriver ID[20] refererer du til den 20. char i din array, dvs. du har en char -type på venstre side og en strengliteral dvs. char* på den anden side. Så konverterer den implicit char* til char (eller int? er ikke helt sikker) og det giver warning.
Dine problemer er generelt temmelig pointer-orienterede. Et generelt råd til dig vil nok være at læse lidt op på pointers i C, og så kigge rigtig grundigt efter i kildekoden når det driller. C er et vanskeligt sprog - især hvis man ikke har 100% styr på det.
Spiderboy (18) skrev:Når du skriver ID[20] refererer du til den 20. char i din array
En lille rettelse. Da arrays er 0-baseret, refererer du faktisk til den 21. char, dvs. hukommelsesområde uden for den allokerede array, og da C ikke laver tjeks af nogen art, advarer den dig ikke.
Nemlig. Men sørg for, at strengen altid kan være derinde, dvs. at længden af strengen ikke er større end størrelsen af din array.
Hvis ikke, så overskriver du hukommelsesområde uden for det allokerede område som i #19, og det kan give meget mystiske fejl. C tjekker intet af sig selv.
Hvis ikke, så overskriver du hukommelsesområde uden for det allokerede område som i #19, og det kan give meget mystiske fejl. C tjekker intet af sig selv.
Jeg vil råde dig til at sætte dig ned med en bog om C. Det virker rimeligt meget som om du er clueless :)
onetreehell (27) skrev:Jeg vil råde dig til at sætte dig ned med en bog om C. Det virker rimeligt meget som om du er clueless :)
det har jeg skam gjort, det er bare længe siden! :) kan ikke huske detaljerne! det var dog C++, og der er en stor forskel fra C synes jeg.
#33, 34
Jeg kender da et par stykker der skriver C i C++ udelukkende standardbiblioteket i C++ er bedre/større.
Jeg kender da et par stykker der skriver C i C++ udelukkende standardbiblioteket i C++ er bedre/større.
arne_v (36) skrev:
1) C med // kommentarer og erklæringer af variable midt i koden
I modsætningen til det her?: http://pastebin.com/theZzHzt
#42
Det lærte jeg egentlig også. Det er ikke noget jeg gør, pt... Sikke noget.
Det lærte jeg egentlig også. Det er ikke noget jeg gør, pt... Sikke noget.
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.