Hirdetés
- Megvásárolható a Vivo X300 és X300 Pro Magyarországon, íme a hivatalos árak
- Az AI miatt biztonságosabb az Android, mint az iPhone
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Telekom mobilszolgáltatások
- Honor Magic V2 - origami
- Xiaomi 15T Pro - a téma nincs lezárva
- Mégis lesz Galaxy S26 Edge. Vagy nem? De!
- iPhone topik
Új hozzászólás Aktív témák
- 
			
			  ZTE_luky senior tag Köszönöm szépen a segítséget, hát igen no [] tömböm random meg van határozva, de annál kevesebb értéket is kivehet mint a max, többet nem. Nem tudom az mennyire lehet probléma. Jelenleg se történik semmi, valami ilyesmit kellett kihozni az egészből 14:00-kor kell leadnom, de nem működik, tele van warning-al és nem is csinál semmi értelmeset sajnos. PEdig a kiinduló C-file gyönyörűen működik. Nem tudom mi lehet a baj, eléggé belekeveredtem sajnos. #include<stdio.h>
 #include<string.h>
 // ---------- Globale Variablen ----------
 int no[] = {0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,
 0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B};
 // Address array
 char string[9]; // String array
 int R0; // (--int halt--) 0 Constant
 int R1;
 int R2; // (--int counter--) Index counter (String)
 int R3; // (--int op--) Index Operation-Code
 int R4; // (--int state--) Index strings
 int R5; // (--int i--) Index counter (Address)
 char R6; // (--char c--) Character to getchar
 char R7; // (--char r1--) Register 1
 char R8; // (--char r2--) Register 2
 char R9; // (--char r3--) Register 3
 int *RA; // (--int *no0--) BP of Address-array NEW
 int *RB; // (--int *noi--) Flexibe Array Pointer NEW
 char *RC; // (--char *string0--) BP of String-array NEW
 char *RD; // (--char stringi--) Flexibe Array Pointer NEW
 int RE; // SIZE 9
 int RF; // FFFF
 // ---------- Main Function ----------
 int main()
 {
 R0 = 0;
 R1 = 1;
 R2 = 0;
 R4 = 0;
 R5 = 0;
 RA = &no[0];
 RC = &string[0];
 RE = 9;
 RF = 0xFFFF;
 //no0 = &no[R0]; // Zero Element (in array "no") NEW
 //string0 = &string[R0]; // Zero Element (in array "string") NEW
 // ---------- Program ----------
 L0: //init
 R2 = R0; //counter
 goto L1; //thestring;
 L1: //thestring:
 if (R2 < RE) // for (counter = 0; counter < 9 ;)
 R6 = getchar(); //c
 if ( R6 != EOF) //c
 goto L2; //ignore;
 else {goto L3;} //end
 L2: //ignore:
 if (R6 != 0x20 && R6 != 0xA) // R6=c
 {
 R2 += R1; //counter++;
 //o++;
 goto L1; //thestring;
 }
 // ---------- Search Function (Operating Code) ----------
 // if (string[0] == 0x41 && string[1] == 0x44 && string[2] == 0x44)
 if (*RC == 0x41 && *RC + R1 == 0x44 && *RC + R1 + R1 == 0x44) //NEW
 { //----- Function ADD -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%c%c%c\n",RB,R3,R7,R8,R9); //Print the current string
 }
 //else if (string[0] == 0x53 && string[1] == 0x55 && string[2] == 0x42)
 else if (*RC == 0x53 && *RC + R1 == 0x55 && *RC + R1 + R1 == 0x42)//NEW
 { //----- Function SUB -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%c%c%c\n",RB,R3,R7,R8,R9); //Print the current string
 }
 //else if (string[0] == 0x41 && string[1] == 0x4E && string[2] == 0x44)
 else if (*RC == 0x41 && *RC + R1 == 0x4E && *RC + R1 + R1 == 0x44) //NEW
 { //----- Function AND -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%c%c%c\n",RB,R3,R7,R8,R9); //Print the current string
 }
 //else if (string[0] == 0x58 && string[1] == 0x4F && string[2] == 0x52)
 else if (*RC == 0x58 && *RC + R1 == 0x4F && *RC + R1 + R1 == 0x52) //NEW
 { //----- Function XOR -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%c%c%c\n",RB,R3,R7,R8,R9); //Print the current string
 }
 //else if (string[0] == 0x53 && string[1] == 0x48 && string[2] == 0x4C)
 else if (*RC == 0x53 && *RC + R1 == 0x48 && *RC + R1 + R1 == 0x4C) //NEW
 { //----- Function SHL -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%c%c%c\n",RB,R3,R7,R8,R9); //Print the current string
 }
 //else if (string[0] == 0x53 && string[1] == 0x48 && string[2] == 0x52)
 else if (*RC == 0x53 && *RC + R1 == 0x48 && *RC + R1 + R1 == 0x52) //NEW
 { //----- Function SHR -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%c%c%c\n",RB,R3,R7,R8,R9); //Print the current string
 }
 //else if (string[0] == 0x48 && string[1] == 0x4C && string[2] == 0x54)
 else if (*RC == 0x48 && *RC + R1 == 0x4C && *RC + R1 + R1 == 0x54) //NEW
 { //----- Function HLT -----
 R3 = R1;
 R4 += R1;
 RB += R1;
 R7 = RC + R1 * 4;
 R8 = RC + R1 * 6;
 R9 = RC + R1 * 8;
 printf("%D:%d%d%d%d\n",RB,R0,R0,R0,R0); //Print the current string
 }
 else printf("%04X\n", RF); //Print FFFF when it's an incorrct Value
 goto L0; //init;
 L3: //end
 return 0;
 }
- 
			
			  ZTE_luky senior tag válasz  Domonkos
							
							
								#5820
							
							üzenetére Domonkos
							
							
								#5820
							
							üzenetéreköszönöm szépen a nagyon hasznos választ  igen teljesen igazad van. a counter és az o változó (index counter) véleméynem szerint ugyan azt a funkciót látta el. nem is tudom hoyg került bele kétszer. át is írtam az o-t counterre, máshol meg kitöröltem de valamiért így se jó  ugyan az a hibaüzenet. hol lehet még hiba? ugyan az a hibaüzenet. hol lehet még hiba? 
- 
			
			  ZTE_luky senior tag A fent látható kódot szeretném átírni LABEL-ökre, de megint megakadtam. Eredeti (persze csak egy része, a tartalom és változók kivágva) for (state = 0; c != EOF;) // Reading the strings
 {
 counter = 0;
 for (o = 0; o < 9 ;) // Get the characters on a string
 {
 c = getchar();
 if(c != 0x20 && c != 0xA) // Ignore spaces and \n
 {
 string[counter] = c;
 counter++;
 o++;
 }
 }
 }És ez a próbálkozásom LABEL-ökkel, de nem nagyon értem el vele semmit (szintén Segmentation fault (core dumped), amit még mindig nem tudok hogy miért van  ) )if ( c!= EOF)
 {
 init:
 counter = 0;
 o = 0;
 goto thestring;
 thestring:
 if (o < 9)
 c = getchar();
 if (c != 0x20 && c != 0xA)
 {
 string[counter] = c;
 counter++;
 o++;
 }
 goto thestring;és persze még az egész kód végére beraktam hogy goto init; és bezártam a bracket-et Kérem aki tud, segítsen hogy mit rontok el. Válaszokat előre is köszönöm szépen! 
- 
			
			  ZTE_luky senior tag Sziasztok, ismét én, zárójelben kezdő vagyok, és C nyelvben kellene egy programot megírnom ami lényegében felistem karaktereket (utasításokat) és lefordítja azokat. pl: első sor: ADD R4 R5 RA 
 ADD-nak az utasításkódja 1, és összeadás a jelentése, az utána lévő registerek pedig: az 5-ös és az A-dik registerben lévő elemeket adja össze és rakja a 4-es regiszterre.ezt a következőképp kéne kiiratni: 
 10:145Atényleg nem fontos hoyg ez mire kell, lényeg hogy egy output file-t hozzunk létre egy inputból ezzel a c-vel ami sorokat hoz létre 10 11 12 13 stb stb.. kezdettel, rak utána egy kettőspontot, és kiírja a parancs megfelelőjét, hoyg azt le lehesen futtatni. Talán ha elolvassáto ka kódot rájöttök. nem is ez a lényeg. A lényeg az hogyha az input bármilyen érvénytelen karaktert tartalmaz írjon ki FFFF-et és álljon le, a szókö és sortörést ignorálja. úgy oldottam meg hogy beolvas egy sztringet, azt átírja, majd olvassa a kövit és az is, de valamiért nem fut le. azzal van gond hoyg nem áll le ( c != EOF) valamint nem olvassa be a következő sztringet (sort) ott a state inkrementálással van baj, valamiért. elég sokat foglalkoztam vele de nem megy, valaki legyen szíves segítsen köszönöm! #include<stdio.h>
 #include<string.h>
 #define SIZE 9
 //DEBUG -- Buffer Overflow, Read the following string
 int main()
 {
 char c;
 int counter = 0;
 int no[] = {0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B};
 char string[SIZE];
 int state = 0;
 int op;
 char r1;
 char r2;
 char r3;
 int i = 0;
 int o = 0;
 for (state = 0; c != EOF; ) //reading the strings
 {
 for (o = 0; o < 10 ;) // get the characters on a string
 {
 c = getchar();
 if(c != 0x20 && c != 0xA && c != 0x2C) // ignore whitespaces and \n
 {
 string[counter] = c;
 counter++;
 o++;
 }
 }
 // ---------- Search Function (Operating Code) ----------
 if (string[0] == 0x41 && string[1] == 0x44 && string[2] == 0x44)
 {
 op = 1; //add
 state++;
 no[i]++;
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 else if (string[0] == 0x53 && string[1] == 0x55 && string[2] == 0x42)
 {
 op = 2; //sub
 state++;
 no[i]++;
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 else if (string[0] == 0x41 && string[1] == 0x4E && string[2] == 0x44)
 {
 op = 3; //and
 state++;
 no[i]++;
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 else if (string[0] == 0x58 && string[1] == 0x4F && string[2] == 0x52)
 {
 op = 4; //xor
 state++;
 no[i]++;
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 else if (string[0] == 0x53 && string[1] == 0x48 && string[2] == 0x4C)
 {
 op = 5; //shl
 state++;
 no[i]++;
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 else if (string[0] == 0x53 && string[1] == 0x48 && string[2] == 0x52)
 {
 op = 6; //shr
 state++;
 no[i]++;
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 else if (string[0] == 0x48 && string[1] == 0x4C && string[2] == 0x54)
 {
 op = 0; //halt
 }
 else printf("FFFF\n");
 //---------- Define Register's Value ----------
 //---------- Print the current string ----------
 r1 = string[4];
 r2 = string[6];
 r3 = string[8];
 printf("%X:%d%c%c%c\n",no[i],op,r1,r2,r3);
 o = 0;
 }
 return 0;
 }Itt egy input file példának, és tesztelésnek: ADD R4 R5 RA
 AND RF R2 R3
 XOR R1 RE RA
 HLTRÖVIDEN: csak az a probléma hogyha felismer egy utasítást, inkrementálja a state-t majd ugorjon vissza a loop elejére, és csináljon meg mindent újra, és írja ki a kövi sort. itt van a legfőbb probléma szerintem. a másik a bufferrel van szerintem, mert ezt írja hibaüzenetnek: 
 *** stack smashing detected ***: ./1531726 terminated
 Aborted (core dumped)
- 
			
			  ZTE_luky senior tag Sziasztok! Tudnátok segíteni? Kell írnom egy programot (c) ami lefordít egy *.asm fájlt (egy adott programnyelv) Visual X-toy-ra (virtuális számítógép ami egy 1960-as gépet szimulál, és csak ezt a különleges utasításrendszerből álló *.asm fájt szedi be helyesen) A lényeg h első sorban szedjünk be vmit getcharral szóközt sortörést ignoráljuk és nem szabad labeleket hazsználnunk, de én már itt elakatam. #include<stdio.h>
 #include<string.h>
 #define SIZE 256
 int main()
 {
 char c;
 char buffer[SIZE];
 int i = 0;
 // char* bp;
 //bp = &buffer[0];
 while ((c = getchar()) != EOF)
 {
 c = getchar();
 if(c != 0x20 || c != 0xA)
 {
 // *bp = c;
 //bp++;
 buffer[i] = c;
 i++;
 }
 }
 //bp = &buffer[0];
 i = 0;
 while(i < strlen(buffer))
 {
 printf("%04X\n", buffer[i]);
 i++;
 }
 return 0;
 }Ez a c kódom, és ez az inputom: ABCDEFG tesztelésképpen néztem meg ezt az inputot, viszont csak ezt dobja ki outputra: 0042 
 0044
 0046
 000AAmi BDF, szóval kidob minden második karakter és belerak egy sortörést, amikor azt ignorálnia kéne. nem értem mi a rossz. tudnátok segíteni? 
Ú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!
- Apple asztali gépek
- Futás, futópályák
- Megvásárolható a Vivo X300 és X300 Pro Magyarországon, íme a hivatalos árak
- sh4d0w: Árnyékos sarok
- Az AI miatt biztonságosabb az Android, mint az iPhone
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Windows 11
- Linux Mint
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- Vicces képek
- További aktív témák...
- HP Spectre x360 Érintős TERVEZŐ Laptop Tab 16" -60% i7-1360P 32/2TB Intel Arc A370M 4GB UHD OLED
- Szép Dell Latitude 7320 -60% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i7-1185G7 32/512 FHD IRIS Xe
- Ahh! Dell Latitude 7430 "Kis Gamer" Üzleti Profi Ultrabook 14" -50% i5-1245U 16/512 FHD IRIS Xe
- 6 DARAB! DELL Latitude Laptop Tartós-Golyóálló-AKÁR SULIBA IS 7410 7430 7440 7320 5320 5410 5420
- Ohh! Dell Latitude 7430 "Kis Gamer" Üzleti Profi Ultrabook 14" -60% i5-1245U 16/512 FHD IRIS Xe
- BESZÁMÍTÁS! Asrock B450M R5 5500 16GB DDR4 512GB SSD RTX 2060 Super 8GB THERMALTAKE VERSA H17 600W
- BESZÁMÍTÁS! Acer KG241QSbiip 24 165Hz TN FHD 1ms monitor garanciával hibátlan működéssel
- Samsung Galaxy A56 5G / 8/256GB / Kártyafüggetlen / 12Hó Garancia / BONTATLAN
- AKCIÓ! DELL PowerEdge R630 rack szerver - 2xE5-2660v4 (28c/56t, 2.0/3.2GHz), 96GB RAM, 4x1G, áfás
- HIBÁTLAN iPhone 13 Pro 256GB Alphine Green 1ÉV GARANCIA -Kártyafüggetlen, MS3745
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
 
						 
								 
							 nagy fába vágtam a fejszém
 nagy fába vágtam a fejszém
 
							
 
							 
							 
							
 
							


