4 svar
69 visningar
mattegeni2000 behöver inte mer hjälp
mattegeni2000 154
Postad: 18 sep 2022 00:18 Redigerad: 18 sep 2022 00:35

får error

hej,jag håller på att göra ett gissa spel när jag försöker köra programmet så får jag fram 1 error som säger 

"Error C4700 uninitialized local variable 'rand' "  som jag kan se så har jag initiera rand genom att lägga till dom två måsvingar {}, det har inte hjälpt om jag förstått  error meddelandet ,men hur som helst vad ska jag göra för att lösa detta problemet.

Ps: är ny på programmering 

min kod:

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

int random(int random) {

int num;


num = rand() % 100 + 1;

return (num);

}
void main(void) {

srand(time(NULL));

int guess;
int corectnum;
int rand, i, again = 0;

corectnum = random(rand);

printf("I’m ”thinking” of a number between 1 and 100, guess which!");
printf("guess:");
scanf_s("%d", &guess);

again++;

while (guess != corectnum) {
if (corectnum > guess){
printf("Your guess is too high, try again!");
}
if (corectnum < guess) {
printf("Your guess is too high, try again!");

}
printf("guess:");
scanf_s("%d",guess),

again++;
}

if (corectnum == guess) {

printf("Congratulations, that is correct!");
printf("You made %i attempts", again);
}


return 0;
}

anders_k 237
Postad: 18 sep 2022 06:45 Redigerad: 18 sep 2022 07:03

Problemet ligger i att du dels har en variabel kallad rand och dels finns det en C runtime function som heter rand().

 

int rand, i, again = 0;

Byt namnet på "rand" till något annat och initialisera den så som du gjorde med "again".

Inom C så kan man betrakta funktionsnamn som adresser, så om du har en funktion som heter rand() och skriver bara rand utan (), så är det adressen i minnet där funktionen startar. Först när du anropar funktionen med argument så beter den sig som en funktion. Kort sagt undvik använda samma variabel namn och funktions namn

Det är bra praxis att initialisera alla variabler när man deklarerar dem.

Undvik att deklarera flera variabler på samma rad, istället ha en på varje rad, det är lättare att läsa. Helst skall man deklarera dem precis innan man använder dem och inte old school högst upp i början av funktionen.

En annan sak : Din "random( )" funktion tar ett argument, men du gör inget med den. 

Din scanf_s har format specifier "%d" byt till " %d" för att ignorera \n

mattegeni2000 154
Postad: 18 sep 2022 10:13
anders_k skrev:

Problemet ligger i att du dels har en variabel kallad rand och dels finns det en C runtime function som heter rand().

 

int rand, i, again = 0;

Byt namnet på "rand" till något annat och initialisera den så som du gjorde med "again".

Inom C så kan man betrakta funktionsnamn som adresser, så om du har en funktion som heter rand() och skriver bara rand utan (), så är det adressen i minnet där funktionen startar. Först när du anropar funktionen med argument så beter den sig som en funktion. Kort sagt undvik använda samma variabel namn och funktions namn

Det är bra praxis att initialisera alla variabler när man deklarerar dem.

Undvik att deklarera flera variabler på samma rad, istället ha en på varje rad, det är lättare att läsa. Helst skall man deklarera dem precis innan man använder dem och inte old school högst upp i början av funktionen.

En annan sak : Din "random( )" funktion tar ett argument, men du gör inget med den. 

Din scanf_s har format specifier "%d" byt till " %d" för att ignorera \n

ok,nu har jag fixat koden,och den funkar köra. när jag körde programmet så frågade den inte samma som på min printf("I’m ”thinking” of a number between 1 and 100, guess which!");  istället så skrev den ("IÆm öthinkingö of a number between 1 and 100") vet du vad som är problemet?

Yngve 40278 – Livehjälpare
Postad: 18 sep 2022 10:32 Redigerad: 18 sep 2022 10:34
mattegeni2000 skrev:

när jag körde programmet så frågade den inte samma som på min printf("I’m ”thinking” of a number between 1 and 100, guess which!");  istället så skrev den ("IÆm öthinkingö of a number between 1 and 100") vet du vad som är problemet?

Ändra till

printf("I am thinking of a number between 1 and 100, guess which!");

Kör programmet. Vad händer då?

Fundera på varför det blir annorlunda.

mattegeni2000 154
Postad: 18 sep 2022 10:51
Yngve skrev:
mattegeni2000 skrev:

när jag körde programmet så frågade den inte samma som på min printf("I’m ”thinking” of a number between 1 and 100, guess which!");  istället så skrev den ("IÆm öthinkingö of a number between 1 and 100") vet du vad som är problemet?

Ändra till

printf("I am thinking of a number between 1 and 100, guess which!");

Kör programmet. Vad händer då?

Fundera på varför det blir annorlunda.

tack så mycket,fixade det 

Svara
Close