- Fotók, videók mobillal
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- Magyarországra jön a Vivo 500 megapixeles kameratelefonja
- Xiaomi 17 Ultra - jó az optikája
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Egyszerre startol a legjobb kameratelefon Kínában és Európában
- Apple iPhone 17 Pro Max – fennsík
- Samsung Galaxy S20 és S20+ duplateszt
- Olcsón ad sokat, de a minősége... Kukirin G2 Ultra teszt
Ú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!
- Xbox Series X|S
- Egyéni arckép 2. lépés: ARCKÉPSZERKESZTŐ
- Véleményes teszt bizonygatja mennyit ér a Macbook Neo 8 GB RAM-ja
- Revolut
- LEGO klub
- Windows 11: miért nem vált mindenki?
- Azonnali notebookos kérdések órája
- Vezetékes FEJhallgatók
- Fejhallgató erősítő és DAC topik
- Vezeték nélküli fejhallgatók
- További aktív témák...
- Erős (HP Omen 17) gamer Laptop! -i9 13900HX, RTX 4090 16gb/175w tgp, 32gb DDR5, 1tb SSD
- riello UPS SDH 3000 - Szünetmentes tápegység - 3000 VA -2U
- Fortinet FortiGate 100E - Tűzfal
- Ruckus ZoneFlex 7363 - Access point - hozzáférési pont - Több db
- 2TB - 2,5" SAS - HDD - HP MM2000JEFRC 2Tb HDD - új dobozos
- LG UltraGear 27GR95QL-B OLED Monitor! LOL Editions - 2560 x 1440 / 240 Hz / 0.03ms / G-SYNC
- iKing.Hu - Apple iPhone 15 Plus 128GB Black használt szép állapot 90% akku 6 hónap garancia
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HP Victus Gaming Laptop RTX 4070 / i7-13700H 16GB DDR5 1TB SSD Garancia
- 245 - Lenovo LOQ (15IRX9) - Intel Core i7-13650HX, RTX 4060 (ELKELT)
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
)
