C programozási nyelv kérdés! Mit rontottam el? (bővebben lent)
Nagyon kezdő programozópalánta vagyok, igazából csak ki szerettem volna próbálni egy programot (a neve Dev-C++, de beállítottam, hogy C-ben programozzon), ezt írtam be:
#include <stdlib.h>
#include <stdio.h>
main( )
{
printf ("Helló vilag!")
}
A két headert automatikusan adta hozzá a program, azokhoz nem piszkáltam hozzá, a többit én írtam be, de ha le akarom fordítani, ezt a két hibaüzenetet nyomja ki:
[Build Error] ["Helló világ!"] Error 1 (ebből azt hámoztam ki, hogy a felépítésében van valami hiba, de nem tudom, mi)
(a hetedik sorban) syntax error before '}' token (vagyis valami mondattani hibát vétettem...?)
Próbaképpen egy másik programot is bemásoltam, amit a netről szedtem, de arra is kiírta az elsőt. Akkor most velem vagy a programmal magával van baj?
Ha valaki segítene, nagyon megköszönném!
3 hiba is van.
1. Nincs a mainnek visszatérési értéke.
2. A printf() után nincs pontosvessző.
3. Nem adsz vissza értéket a main végén.
A kód helyesen:
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("Helló világ!");
return 0;
}
A pontosvessző maradt le az utasítás végéről. Ezért jelezte a hibát a }-nél.
A "mondattani" szót pedig valami Google Translate vagy szótár dobta ki? Felejtsd el a szakszavak magyarra fordítását, inkább tanuld meg, mi az a szintaxis! :)
Próbáld így:
#include <stdio.h>
int main(void)
{
printf("Hello World\n");
return 0;
}
A másik variáció, hogy az eredeti programodban ne használj ékezetes betűket. (Hello world, Hello vilag) Mert amúgy még akár le is fordulhatna, fordítótól függően.
"syntax error before '}' token"
Nem túl beszédes fordító. A CodeBlocks fordítója (MinGW), ezt írja:
...main.c - 7 - error: expected ';' before '}' token
Vagyis pontosvesszőt hiányol a '}' előtt.
Az int hiányára csak figyelmeztet, de lefordítja. :)
Amúgy a szintaktikai hiba azt jelenti, hogy formai hiba, tehát a fordító nem tudja értelmezni a forráskódot, nem felel meg a programnyelv szabályainak.
"1. Nincs a mainnek visszatérési értéke.
2. A printf() után nincs pontosvessző.
3. Nem adsz vissza értéket a main végén."
Ebből a háromból csak egy igazi hiba. A C ismeri a default int fogalmát. Változókra, függvényekre, ha nincs kiírva a típus akkor int. A main visszatérési értéke meg szintén implicit 0.
Köszönöm a válaszokat!
1. Az egészet egy elég régi könyv után csináltam, ahol a main-t soha nem deklarálták, legalábbis nem láttam.
2. Ez sajnos nem az én hibám, hanem a programé, gondoltam is erre a hibára, de egyszerűen nem engedte kitenni a pontosvesszőt valamiért.
3. Nem is gondoltam volna, hogy egy ilyen egyszerű utasítás után is ki kell tenni a return-t, de jó, hogy már ezt is tudom.
Valamint lenne még egy kérdésem. Miután az összes hibát kijavítottam és végre lefordítottam&lefuttattam, a program ablakja csak egy töredék másodpercre jelenik meg, aztán eltűnik. Lehetne valahogy stabilizálni?
A return elé szúrd be:
getchar();
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!