Hirdetés
- Kompakt, mégis egyszerűen fejleszthető barebone géppel jelentkezett a Shuttle
- 100 Hz-et tud az ASUS dokkolóval kombinált, ultraszéles monitora
- Egyre inkább szoftverrel segítene a Core CPU-k teljesítményén az Intel
- A szuperintelligencia még odébb, a szuperapp már közel
- Ha Darwinra hallgat az AI, nehéz lesz megállítani
- Apple MacBook
- Kormányok / autós szimulátorok topikja
- 5.1, 7.1 és gamer fejhallgatók
- Fejhallgató erősítő és DAC topik
- Androidos fejegységek
- Amazon Fire TV stick/box
- 4K vs 8K – Megéri-e a 8K TV 2026-ban?
- Túllépne a DRAM limitjein a Neo Semiconductor-féle 3D X-DRAM
- HP notebook topic
- AMD K6-III, és minden ami RETRO - Oldschool tuning
Új hozzászólás Aktív témák
-
Rickazoid
addikt
Üdv!
Ismét volna némi C problémám. Továbbra is táblázat, ezúttal a feltöltése nem akar működni. A cél az lenne, hogy előre nem meghatározott méretű tömbökbe kérek be értékeket, szövegeket és újabb értékeket.
A példaprogramom a következőképp néz ki:int main()
{
int i=0,j=0,k=0,idx[MAXIDX];
char c='y',name[MAXIDX][NAMELEN];
float data[MAXIDX];
while(c=='y')
{
printf("ID: ");
scanf("%d",&idx[i]);
printf("Name: ");
while(getc(stdin)!='\n'){} //ha nem írom be, a következő while ciklus nem fut le
while(name[i][j]=getchar()!='\n')
j++;
printf("Data: ");
scanf("%f",&data[i]);
printf("New? (y/n): ");
while(getc(stdin)!='\n'){} //ha nem írom be, a következő getchar() függvény nem fut le
c=getchar();
i++;
}
printf("\nWriting out:\n\n");
for(j=0;j<i;j++)
{
printf("ID: %d\n",idx[j]);
printf("Name: ");
for(k=0;k<NAMELEN;k++)
{
putchar(name[j][k]);
}
printf("\nData: %.2f\n",data[j]);
}
printf("\n");
system("pause");
return 0;
}A nagybetűs változók előre vannak definiálva.
A gond az, ahogy azt a kódba is beírtam, hogy bizonyos helyzetekben a program továbblép karakterbeolvasás nélkül, illetve a szöveget a name tömbből nem írja ki, esetleg el sem tárolja.
Viszont ha ezt írom:int main()
{
int i=0,j=0,k=0,idx[MAXIDX];
char c='y',name[MAXIDX][NAMELEN];
float data[MAXIDX];
while(c=='y')
{
printf("ID: ");
scanf("%d",&idx[i]);
printf("Name: ");
while(getc(stdin)!='\n'){} //ha nem írom be, a következő while ciklus nem fut le
while(name[i][j]=getchar()!='\n')
j++;
printf("New? (y/n): ");
c=getchar();
i++;
}
printf("\nWriting out:\n\n");
for(j=0;j<i;j++)
{
printf("ID: %d\n",idx[j]);
printf("Name: ");
for(k=0;k<NAMELEN;k++)
{
putchar(name[j][k]);
}
}
printf("\n");
system("pause");
return 0;
}vagyis mindössze lehagyom a lebegőpontos szám beolvasását, nem kell a második while(getc(stdin)!='\n'){}, de ilyenkor meg ha a c értéke 'n' lesz, egy plusz entert kell nyomnom, hogy továbblépjen. Azok alapján, amit tanultam, ennek és az ez előttinek is jónak kéne lennie, se plusz entereket nem kéne várnia, se while(getc(stdin)!='\n'){} ügyeskedésre nem kéne, hogy szükség legyen és a szövegeket is el kéne tárolnia. Átnéztem az órai, működő példákat (persze egyik sem komplexebb pár sorosnál), de nem találom, hogy miért fut ez a program másképp. A scanf() és a getchar() valahogy ütközik egymással? A name[x][y] alak nem alkalmas szövegek tömbbe tárolására? (karakterek két dimenziós tömbje... miért nincs string típusú változó C-ben?)
Az órai példa ez volt szövegekre:char i,name[5][80];
for(i=0;i<5;i++)
{
printf("Type a word: ");
scanf("%s",name[i]); //nem kell & jel, mivel a nev[i] itt eleve mutató
//scanf() esetén a space is megszakító karakter,
//ezzel nem lehet szóközöket tartalmazó sorokat beolvasni
}
for(i=0;i<5;i++)
printf("%s\n",name[i]);Ebből sajnos nem jövök rá, hogy tudnék a getchar() függvénnyel beolvastatni több szöveget is egy tömbbe, ha a scanf() nem alkalmas szóközök olvasására, de nekem azok is kellenek.
Ú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
- Apple MacBook
- Óvodások homokozója
- Kormányok / autós szimulátorok topikja
- Amazfit Active 2 NFC - jó kör
- Graphics: Telefonvásárlási kálváriám....avagy clickbait cím: Horror a hardveraprón
- Kerékpárosok, bringások ide!
- Gitáros topic
- Parkside szerszám kibeszélő
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- Dell Latitude 7420 Core i7-1185 G7, 16GB RAM, SSD, jó akku, számla, 6 hó gar, szép állapot
- Apple iPhone 13 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- 234 - Lenovo Legion Pro 7 (16IAX10H) - Intel Core U9 275HX, RTX 5080
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
- Tüzes Ezüst! CTO! MacBook Air M5 24GB 1000GB Garancia! SILVER TÖLTŐVEL!!!!!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

