Kezdőoldal » Számítástechnika » Programozás » Írtam egy C programot, ami az...

Írtam egy C programot, ami az ékezetes betűket (á, é, ő stb. ) ASCII karakterekkel helyettesíti. Miért nem működik?

Figyelt kérdés

Ha tudtok erre egyszerűbb megoldást (akármit, ez nem házi vagy hasonló, tényleg szükségem lenne egy ilyesmi dologra) szívesen veszem. :)

A kód: [link]

(Azért C-ben próbáltam, mert csak ezt a nyelvet ismerem.)



2014. nov. 27. 23:05
 1/10 anonim ***** válasza:
char típus eleve 8 bites, abban kíváncsi lennék hogy akarsz tárolni egy isten tudja hány bites unicode értéket...
2014. nov. 27. 23:16
Hasznos számodra ez a válasz?
 2/10 anonim válasza:

ascii kóddal írd be a cserét,

pl.

else if (c=='ü') c='u';

helyett

else if (c==99) c=88;

A 99 és a 88 találomra írt ascii kód, majd te kikeresgéled őket :)

2014. nov. 27. 23:16
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
100%

Rosszul van zárójelezve a while. Belülről kifelé:


1. Beolvas egy karaktert //getc(f)

2. Megnézi, hogy EOF-e //getc(f)!=EOF

3. A visszakapott "boolean" értéket, ami egy int C-ben, 1 vagy 0 összehasonlítja a c char cáltozó értékével //c==(getc(f)!=EOF)

4. Ezt a típuskeverés miatt is értelmetlen újabb "boolean" értéket fogod aztán a karakterekkel összehasonlítgatni. Természetesen egyik karakter sem lesz 1 vagy 0 még int-re konvertálva sem, tehát nem történik semmi. A c-nek pedig értéke sincs egész idő alatt, mivel sose kap értéket, a tartalma teljesen véletlenszerű.

2014. nov. 27. 23:21
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:
Köszi a válaszokat, kijavítottam amit tudtam, de így sem működik jól, viszont már nem hibaüzenettel fejeződik be. Ha valaki ismer erre egyszerűbb megoldást, továbbra is várom, nehezemre esik elhinni, hogy nincs valami oldal ami ilyet csinál (én nem találtam). [link]
2014. nov. 28. 00:00
 5/10 anonim ***** válasza:
100%

A zárójelezés még mindig nem jó, az tuti. A c=(getc(f)) felesleges, talán a c elé akartad az elejét tenni. Illetve biztos...


Ha ez megvan, akkor elvileg a c változóban már kéne, hogy cserélgesse a betűket. Utána azt valami fájlba bele is kéne írni, hiszen anélkül egyszerűen elveszik, amikor újabb értéket kap, illetve amikor kilép a program, és felszabadul a memória.

2014. nov. 28. 00:05
Hasznos számodra ez a válasz?
 6/10 anonim válasza:
# 1 nincs rá garancia, hogy 8 bites...
2014. nov. 28. 11:39
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
#6 de van... olvasd el ezt: [link]
2014. nov. 28. 12:01
Hasznos számodra ez a válasz?
 8/10 anonim válasza:
# 7 inkább te olvasd el mondjuk ezt: [link]
2014. nov. 28. 12:09
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

A char valóban nem garantáltan 8 bit, sőt, pont ez a c lényege, hogy nincs megmondva.

De itt most ezen felesleges vitázni, elvétve találsz olyan gépet szerintem, ahol nem 8, és különben is kikötheted, hogy a programod csak azon megy. (szerintem a kollofgyuti 26 is elhasalna egy gépen, ahol 3 bit a char, érthető módon)


@kérdező: van egyszerűbb, pl bármilyen online php interpreterbe beírod az alábbi kódot, és meg is vagy:


<?php


function ekezettelenit($miben) {

$mit = array('á','é','í','ó','ö','ő','ú','ü','ű');

$mire = array('a','e','i','o','o','o','u','u','u');

return str_replace($mit, $mire, $miben);

}


echo ekezettelenit("aóüglfééwglóüefwé");


?>

2014. nov. 28. 19:50
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:
Aki hasznos választ küldött annak köszi,a program nem jött össze,viszont megtudtam, hogy jegyzettömbben a ctrl+H-val lehetőség van tetszés szerint cserélgetni a karaktereket, úgy hogy így oldottam meg. :)
2014. nov. 29. 20:47

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!