- Milyen TV-t vegyek?
- iPad topik
- Melyik tápegységet vegyem?
- Hobby elektronika
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Rekordokra vágyik! Kezünkben az Asus ROG Matrix GeForce RTX 5090
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- TCL LCD és LED TV-k
- Azonnali fotós kérdések órája
Ú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!
- PlayStation 5
- LordAthis: Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja az aktuális trendeket...
- LordAthis: AI Kérdés érkezett - 3600 soros Spagetti kód refaktorálása és budget
- Milyen TV-t vegyek?
- Sony Xperia 1 VII - Látod-e, esteledik
- Medence topik
- Milyen légkondit a lakásba?
- iPad topik
- Kínai és egyéb olcsó órák topikja
- Megjött a jubileumi Pixel széria
- További aktív témák...
- Bontatlan utángyártott toner Samsung CLP-310/315 és CLX-3170/3175 nyomtatókhoz
- Zotac Geforce RTX 3060 (működik, de hibás!)
- Lenovo Thinkpad X1 Carbon Laptop 14" i7-8565U 4Mag 16GB/512GB FHD IPS
- Razer Cynosa V2 - Nordic Layout INGYEN FOXPOST
- i7 asztali pc játszani, és sok másra, bomba áron!!!! Socket 2066 64GB 8GB VGA
- Új MSI Katana 15 Gamer FHD IPS 144Hz i7-13620H 10mag 16GB 512GB Nvidia RTX 4060 8GB Win11 Garancia
- Azonnali készpénzes Apple Macbook Air felvásárlás személyesen / csomagküldéssel korrekt áron
- ÁRGARANCIA!Épített KomPhone i5 14600KF 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Garancia! Steam Deck OLED 1TB Kézikonzol!
- HIBÁTLAN iPhone 14 Pro 128GB Deep Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3102
Állásajánlatok
Cég: FOTC
Város: Budapest