- sziku69: Fűzzük össze a szavakat :)
- Fűtés és hűtés klímával, napelem segítségével
- [K2]: A vagyonvédelmi rendszerszerelővé válás rögös útja
- btz: Internet fejlesztés országosan!
- gban: Ingyen kellene, de tegnapra
- KRTLPC: Ki és hogyan élt túl? Volt ám fennakadás
- sziku69: Szólánc.
- ldave: New Game Blitz - 2025
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
Új hozzászólás Aktív témák
-
Szőkecica
csendes tag
válasz
Pcmagicnet #2379 üzenetére
Szia!
Kicsit át alakítottam a kódodat, de ez így műxik. Bár én is most kezdtem tanulni nemrég a C-t ;-)#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define SZOHOSSZ 5
#define HOSSZU 100
#define MAX_SZO 200/* Program ami minden 5 karakternél hosszabb szót átmásol egy másik tömbbe */
int main(int argc, char** argv) {
char s[MAX_SZO][HOSSZU], hosszuszo[MAX_SZO][HOSSZU];
FILE* f = stdin;
int i, counter, counterHosszu, len;counter = 0;
counterHosszu = 0;while (!feof(f) && counter < MAX_SZO) {
fscanf(f, "%s", s[counter]);
len = strlen(s[counter]);
if (len > SZOHOSSZ) {
strcpy(hosszuszo[counterHosszu], s[counter]);
counterHosszu++;
}
counter++;
}printf("Hosszu szavak: \n");
for (i = 0; i < counterHosszu; ++i) {
printf("%s ", hosszuszo);
}
printf("\n");
return 0;
} -
Korcsii
őstag
válasz
Pcmagicnet #2379 üzenetére
a \0 egy speciális karakter (NULL karakternek is hívják), szerepe, hogy jelezze a string végét (miért jó, azt csak akkor érted meg igazán, amikor nem engedik meg a string.h használatát
)
szóval egy char tömbben (stringben) csak egyszer szerepelhet, bár tárolhatsz mögötte bármit, meg is jegyzi, de nem fogja kiírni, mert a kiírás is \0-ig történik...
strcat-tal lehet őket összefűzni, vagy ha egy mondatot akarsz egyben beleolvasni, akkor a szóközt is beleveszed, etc...
scanf("[^\n]",string);
pl én ezt szerettem anno, mindent beolvas addig, amíg sortörést nem talál... DE ez csak akkor alkalmazható, ha el is fér a string tömbben, azaz ha a feladat leírja, hogy márpedig csak ekkora meg ekkora lehet...a másik változatot:
int i = 0;
while((c = getchar()) != '\n') string[i++] = c;
string[i] = '\0';a probléma ugyanaz, ha nem fér el a megadott helyen (regényt adsz neki), akkor elszáll a program, de ha meg van adva a méret, használható...
ez utóbbiból azonban ki lehet indulni, ha dinamikusan akarjuk a memóriát lefoglalni: legjobb megoldás talán az, hogy foglalunk x méretűt, ha elérjük az x-et, foglalunk még egyszer akkorát, aztán a legvégén, amikor már az egész string megvan, megnézzük a méretét (vagy vesszük az i értékét), foglalunk egy akkorát, és belemásoljuk - így pont akkora helyet foglalunk neki, amekkora...
Ú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!
- A YouTube-ot is betiltják a gyereknél az ausztrálok
- Battlefield 6
- exHWSW - Értünk mindenhez IS
- Ubiquiti hálózati eszközök
- BestBuy topik
- Fűnyíró topik
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- Házimozi haladó szinten
- Android alkalmazások - szoftver kibeszélő topik
- EAFC 25
- További aktív témák...
- Eladó egy XMG P406 laptop
- Lenovo Legion 5 Ryzen 5 5600H RTX 3060 16GB 1,5TB SSD
- AKCIÓ! GIGABYTE AORUS ELITE Z790 i7 14700K 64GB DDR5 1TB SSD 7900 XTX 24GB be quiet! SB 802 1000W
- AMD Ryzen 5 5500 - Új, 3 év garancia - Eladó!
- AKCIÓ! ASRock Z370 i5 8500 16GB DDR4 512GB SSD 2060 Super 8GB Zalman Z9 Plus Enermax 750W
- Gamer PC- Számítógép! Csere-Beszámítás! I7 4790K / 16GB DDR3 / RX 5700XT 8GB / 512GB SSD
- Azonnali készpénzes nVidia RTX 3000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- BESZÁMÍTÁS! ASUS TUF A620M R5 7600X 32GB DDR5 1TB SSD RX 6700 XT 12GB ZALMAN I3 NEO A-Data 750W
- ÚJ Lenovo ThinkPad X13 Gen 5 - 13.3" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
- Apple iPhone SE 16GB, Kártyafüggetlen, 1 Év Garanciával