- Az Apple iPadOS-t is megrendszabályozza az EU
- Videó stream letöltése
- Microsoft Excel topic
- HBO Max & OD topic
- Milyen routert?
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Hálózatokról alaposan
- 3 évig még biztosan nem rendelhetünk Xiaomi EV-t
- Windows 11
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
Új hozzászólás Aktív témák
-
Benmartin
senior tag
-
Benmartin
senior tag
válasz Bettina87 #391 üzenetére
A KR C-ben a függvények deklarálásakor csak az értékkészlet deklarációja szerepel. Hogy hány változós a függvény és hogy milyen típusúak az egyes változók, az nem.
Szerintem ez így nem igaz, vagy nekem nem egyértelmű.
The C programming Language
By Brian W. Kernighan and Dennis M. Ritchie.
Chapter 4 - Functions and Program Structure:"Each function definition has the form
return-type function-name(argument declarations)
{
declarations and statements
}" -
Benmartin
senior tag
-
Benmartin
senior tag
válasz Fire/SOUL/CD #571 üzenetére
Szia!
Véleményem szerint nem jó dolog getch()-t ajánlani, mert a conio.h-ban található, ami nem szabványos C-library, márpedig egyetemen úgy tudom standard ANSI C-t tanítanak.
-
Benmartin
senior tag
válasz Fire/SOUL/CD #573 üzenetére
Szia!
Értem, hogy mire gondolsz és van is benne igazság, viszont több ponton nem értek egyet a mondandóddal.
- "conio.h mióta C létezik azóta van és használják".
Ez így azért nem igaz, mert az MS-DOS fordítókban használták először, a C pedig 1972-ben jelent meg és akkor még nem volt MS-DOS. Igazából ez most nem is számít igazán, nem kötekedésből mondom.- "Az viszont elég szomorú, hogy 2008-ban olyan feladatokat kapnak a tanulók, amikhez Console Application-okhoz kell nyúlni"
Attól függ mit oktatnak, bár még nem vagyok egyetemista nagyjából ismerem a tantárgyakat, vegyük például az algoritmusok és adatszerkezetek tárgyat, ahol megtanítják, hogyan kell pl. hasítótáblázatot létrehozni. Nem igazán számít, hogy milyen szép meg csicsás a programod, hanem, hogy jól működik-e, gyors, a többi itt sallang marad, nem lényeg, a hangsúly az algoritmuson van, hisz az a lelke az egésznek.
Később megtanítják majd az objektumokat, meg a grafikus interfészt is, ebben biztos vagyok. -
Benmartin
senior tag
szia!
wincon.h-hoz szükséges windows.h, char != char*, azért x = '3'. SetConsoleCursorPosition() fvnek nem csak header kell, hanem library is(kernel32). valamint nem két int a paramétere, hanem:
BOOL WINAPI SetConsoleCursorPosition(
__in HANDLE hConsoleOutput,
__in COORD dwCursorPosition
);ennek megfelelően így alakul a kód:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <wincon.h>
main() {
COORD kord;
HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
kord.X = 2;
kord.Y = 3;
char x = '3';
SetConsoleCursorPosition(hConsoleOutput,kord);
printf("%c",x);
getch();
} -
Benmartin
senior tag
válasz cellpeti #667 üzenetére
valami ilyesmi:
#include <stdio.h>
int getline()
{
int sum = 0, i = 0, c, hatodik;
while((c = getchar()) && isalnum(c))
{
sum += c - '0';
hatodik = c - '0';
i++;
}
sum -= hatodik;
if(i != 6 || sum % 6 != hatodik) return 0;
return 1;
}
int main()
{
if(getline())
{
puts("Helyes!");
} else puts("Hibas");
getchar();
return 0;
}[ Szerkesztve ]
-
Benmartin
senior tag
válasz babyanigirl #680 üzenetére
szia!
először is deklarálj egy darab tömböt, mondjuk úgy 100 elemet, de még annyi sem kell, ezután olvasd be soronként az inputot (fgets), mert így kevesebb a függvényhívás, majd iterálj végig a sor minden karakterén, vond le belőlük a nullás karaktert és növeld a darab tömb ezen indexét (darab[sor[i]-'0']++).
majd kiírásnál, ahol nem nulla a tömb értéke hozzáadod az indexhez a nullás karaktert és kiíratod a tömb értékét.
valahogy így.
-
Benmartin
senior tag
szia!
a gond a beolvasással van, a két számláló változód végig nulla marad, vagyis egyik feltétel sem teljesül a programod futása során.
a gond a scanf("%c %c")-el van ugyanis egy lehetséges "p k" input beütésénél a programod egy "p k\n" stringet kap meg, amit nem tudsz feldolgozni "%c %c"-vel.
megoldás: scanf("%s %s",&elso,&masodik);
ja és: elso, masodik típusa char legyen, ne int.
üdv.
[ Szerkesztve ]
-
Benmartin
senior tag
globális meg lokális deklaráció között a foglalás helyében van nagy különbség (előbbi RAM, utóbbi verem).
igazából nem tudok magyarázatot adni, hogy miért ment globálisan deklarált változónál (bár sejtem: valószínűleg %s-nél megpróbálta beleírni a '\0' karaktert a pointer végére és az egyik allokációnál sikerült a másiknál meg nem, talán ez lehet). mindenesetre a megoldás, amit mutattam nem túl szép, pontosan amiatt, hogy igazából nem szabadna char-ba %s-el olvasni, mert string beolvasásnál +1 karakter mindig kell a végére (emiatt lehet túlcsordulás).a scanf("%c %c")-vel az a probléma, hogy amikor beolvasol bármit az inputról, akkor jön vele mindig egy '\n' karakter az enter miatt és ezt nem tudod hol eltárolni, szóval bennemarad billpufferban, a következő beolvasásnál meg szépen előveszi a puffer tartalmat és beleteszi a változódba, viszont ha kiüríted ezt a puffert, akkor rendesen fog működni a beolvasás.
a szabványos inputra (stdin) kell meghívnod az fflush függvényt, szóval a while előtt, majd minden scanf("%c %c") olvasás után hajtsd végre a következő utasítást: fflush(stdin), ezáltal eltűnnek a pufferból az input végén "varakozó" soremelés karakterek.
remélem segítettem és érthető.
-
Benmartin
senior tag
válasz Elektromann #1062 üzenetére
Szia!
VS-ben includeolni kell az "stdafx.h" fájlt, de kezdésnek tényleg nem ajánlott az az IDE, mint ahogy a Borland Turbo C-je sem, használj olyan IDE-t, amiben szabványos ANSI C fordító van: Dev-Cpp, ezzel egyidejűleg C++ és C kódot is tudsz fordítani, a fájl kiterjesztésétől függően.
-
Benmartin
senior tag
válasz Elektromann #1066 üzenetére
Dev-Cpp-vel miért nem mentél sokra? Az általad beírt kódok bármelyike fordítható a Dev-Cpp compilerével.
Azért nincs a main előtt int, mert a C-ben van egy olyan szabály, hogy azok a függvények, amelyeknek nem definiálod a típusát alapból int-ek lesznek.
-
Benmartin
senior tag
válasz Sk8erPeter #1100 üzenetére
Elég általános kérdéseket teszel fel: "Hogyan születik meg a javított kimeneti fájl?" Hát úgy, hogy létrehozod a fájlt, erre mit lehet mondani?
1.) fgets
2.) Egyébként én úgy csinálnám, hogy magát a fájlneveket is kigyűjteném egy fájlba és abból olvasnám be, majd nyitnám meg a fájlokat.
3.) fopen("javitott.txt","w") -
Benmartin
senior tag
válasz Benmartin #1101 üzenetére
De megírtam, hogy ne csak dumáljak itt:
#include <stdio.h>
#define MAX_FAJLNEV_HOSSZ 100
FILE * filelist, * file;
char name[MAX_FAJLNEV_HOSSZ+1], * block;
unsigned int h;
int main()
{
filelist = fopen("filelist.txt","r");
while(!feof(filelist))
{
fscanf(filelist,"%s",name);
file = fopen(name,"r");
fseek (file,0,SEEK_END);
h = ftell(file);
rewind(file);
block = (char *) malloc(h);
fread(block,1,h,file);
block += 4;
fclose(file);
fopen(strcat(name,"_jav.txt"),"w");
fwrite(block,1,h-4,file);
fclose(file);
}
fclose(filelist);
return 0;
} -
Benmartin
senior tag
válasz Jester01 #1104 üzenetére
1.) Tényleg elnéztem.
2.) Meglehet, gyakorlatban azonban működik.
3.) Jó, hát általában nem teszünk szóközt a fájlokba.
4.) Azért van a MAX_FAJLNEV_HOSSZ.
5.) Több megoldás is létezik.
6.-7.) ANSI C fordítónak nem is kell.
8.) Csúnyán néznek de működik, mondjuk akár ki is lehet venni.
9.) Ez jogos.
10.) Ebbe fölösleges belekötni.
11.) long-ot, de ebből nem igen lesz probléma.
12.) Nem is akartam hibakezelést írni. (gondolom magának írja) -
Benmartin
senior tag
válasz Sk8erPeter #1107 üzenetére
Mert különbözik a compilerünk, kipróbáltam mielőtt elküldtem neked.
-
Benmartin
senior tag
válasz Jester01 #1106 üzenetére
2. Igen, kipróbáltam, bizonyára azért működött, mert nem volt '\n' a sor végén.
3. Oké, elfogadom, én nem szoktam, lehet azért írtam így.
4. Ez oké, de nem akartam bele hibakezelést írni, meg overflowokra figyelni, mert az kétszer ennyi kód, jelzésnek viszont ott volt, hogy mire képes.
5. Szerencsére itt nem voltak olyan méretek.
6-7. Ennek ellent kell mondjak rengeteg forráskódot küldtem már programozó versenyekre, ahol oline judge fordít ANSI C fordítóval, és nem igényelte a headereket, tulajdonképpen még az stdio.h-t sem.
10. Ez kérdéses, hogy mikor jó, mikor nem. Ebben a kódban semmi jelentősége nem volt, hogy globálisak a változók, egy másik példában lehet zavart okoz, egy másikban meg lehet, hogy pont úgy célszerű.
11. Valóban nem tudhatom, ha ilyen egyéni igények vannak, akkor lehet változtatásokat eszközölni.
12. Nincs rendben, de mondtam, hogy ennek kivédését nem állt szándékomban megírni.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Stellar Blade
- exHWSW - Értünk mindenhez IS
- OLED TV topic
- Az Apple iPadOS-t is megrendszabályozza az EU
- Sorozatok
- Horgász topik
- Okos Otthon / Smart Home
- Ukrajnai háború
- További aktív témák...