Mikä tässä on vikana??
#include<stdio.h> #include<string.h> void main(void) { int kappale1=0, pisteet; int i, j; for(j=1;j<=5;j++){ for(i=1;i<=j;i++){ printf("Anna pisteet: "); scanf("%s", &pisteet); kappale1=kappale1+pisteet; } printf("Pisteet %c on %s\n",j,kappale1); kappale1=0; getchar(); } }
Enosaa kirjoitti:
Mikä tässä on vikana??
Puuttuu koodi-tagit, ja pari typoa...
#include<stdio.h> #include<string.h> void main(void) { int kappale1=0, pisteet; int i, j; for(j=1;j<=5;j++){ for(i=1;i<=j;i++){ printf("Anna pisteet: "); scanf("%i", &pisteet); kappale1=kappale1+pisteet; } printf("Pisteet %c on %i\n",j,kappale1); kappale1=0; getchar(); } }
Katsotaanpa, mitä kääntäjä sanoo koodistasi:
tmp.c:4:6: warning: return type of ‘main’ is not ‘int’ [-Wmain] void main(void) ^~~~ tmp.c: In function ‘main’: tmp.c:12:19: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=] scanf("%s", &pisteet); ~^ ~~~~~~~~ %ls tmp.c:15:28: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat=] printf("Pisteet %c on %s\n",j,kappale1); ~^ %d
Kolme virhettä siis: Lukujen oikea formaatti on %d eikä %s (sekä scanf- että printf-kohdassa), ja main-funktion paluuarvon tyyppinä tulee olla int eikä void (eli alun pitää olla int main(void)
).
Aihe on jo aika vanha, joten et voi enää vastata siihen.