Specter Napisano Czerwiec 17, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 17, 2018 nizej... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Czerwiec 18, 2018 Zgłoś Udostępnij Napisano Czerwiec 18, 2018 Miałem taki problem niekiedy, ale przeważnie robił mi bagno w całym stringu. Ale możesz spróbować najpierw wyzerować zmienną text: for (int i = 0; i < 30; i++) text = '\0'; jak to nie pomoże to wpisz do tego text`u jakiś znak na początku. np. text[0] = ';' ; powinno pomódz, przynajmnij mnie pomagało chociarz miałem trochę inną sytuację. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 18, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 18, 2018 qrcze sorka ludzie lekko w blad wprowadzilem jest ok bo 30 znakow tablica bylo zamalo lecz dzieki temu sie doweidzialem ze strcpy jesli ma kopiowac do tablicy np 30 znakow ma skopiowac 50 znakow to jakos je wlaczy i dodaje koniec jako znaki ?? ;] if(text[dl-1] == 'e' || text[dl-1] == 'E' && text[dl-2] == 'x' || text[dl-2] == 'X' && text[dl-3] == 'e' || text[dl-3] == 'E' && text[dl-4] == '.') { jest to dobrze? ;] ma to sprawdzic od tylu skopiowanej sciezki jak wyzej pisalem czy to plik exe czyli <nazwa_pliku>.exe <- sprawdza to dorbze zrobilem? bo uzwgledniam wielkosc liter ;] int (*ptr)(char *str); rowne funkcji StrPrint(char *str) int StrPrint(char *str) { printf("bla"); return 3; } taki przyklad w ksiazce wie ktos o co tu lata ze sa 2 wskniki jagby oddzielne int (*ptr)(char *str); wpisywane a nie char **str; o co tu lata? i ze rowne funkci? czyloi jeden * to jak funkcja? ;/ i do tego pisze (char *ptr) to argumenty czyli niby [n] ?? a wskanik wskazuje funkcje to (*ptr) :/ qrde nie jarze nie wiem co psize :/ wie ktos o co tu chodzi? ;/ tyle pytan co :P A wie ktos jak upieknic interfejns konsoli? czyloi nie winapi a zwykly dos np kolor tla calosci / kolor tla przy danym tekscie linijce / kolro czionki / jaka czcionka / rozmiar czcionki?? jakies zrodlelko? :> nie funkcja()l bo nie wim co tam wpisac :( No i last quastion :P jak przy main(int argc, char *argv[]); // dla dosowej konsoli main(int argc, char *argv[],*env[]); //dla borlanda wiec jak to pobrac te 3 rzeczy dla borlanda? jesli pisza printf("%d",argc); nie ma ?? ;/ a jeszcze ze tyle sorka :( ale w piatek olimpiada :(( wytluamczie nzasady dzilaania continue z break rowne funkcji goto bo ja nie widze podobienstwa :/ dzieki :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Generał Napisano Czerwiec 18, 2018 Zgłoś Udostępnij Napisano Czerwiec 18, 2018 Czakol napisał: int (*ptr)(char *str); rowne funkcji StrPrint(char *str) int StrPrint(char *str) { printf("bla"); return 3; } Co sie tyczy tego to robisz to tak ,aby powiedziec kompilatorowi ,że ptr jest wskaźnikiem do funkcji przyjmującej jeden parametr będący wskaźnikiem do typu char a zwracający int. Co do sprawdzania tego Exe to chyba dobrze... to tyle co mogę powiedzieć...moze i bym cos powiedzial nt. tego argc..ale nie bardzo rozumiem co znaczy "jeśli piszą printf("%d",argc); nie ma?? ;/ " a napewno uruchamiasz program z jakimiś parametrami?? Bo jezeli nie to argc =0... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 18, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 18, 2018 what aver czy 1 czy 0 argc zwraca bardziej mysle o tym, ze nie moge poprostu tego pobrac wyskakuje mi blad ze nie ma takiej zmiennej... a nie moge jej zadeklrowac jako int main() bo builder robie po swojemu wszytko i nie wiem gdzie bylby ten poczatek (jesli jest ) poczatek czyli funkcja int main(); :/ no i reszta opytanek :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Czerwiec 19, 2018 Zgłoś Udostępnij Napisano Czerwiec 19, 2018 Ja obczaiłem inny sposób na sprawdzanie tego execa. Robisz taki warunek: if (sstr = strstr(text, ".exe")) jest exekiem; else nie jest exekiem; to wszytko :-] Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Czerwiec 19, 2018 Zgłoś Udostępnij Napisano Czerwiec 19, 2018 Ja obczaiłem inny sposób na sprawdzanie tego execa. Robisz taki warunek: char *sstr; if (sstr = strstr(text, ".exe")) jest exekiem; else nie jest exekiem; to wszytko :-] Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Czerwiec 19, 2018 Zgłoś Udostępnij Napisano Czerwiec 19, 2018 Nie wiem, czy to pomoże Ci rozwiązać twój problem, ale zawsze mozesz spróbować. Istnieją sobie takie dwie funkcje (chyba czystego WinAPI): 1. LPTSTR GetCommandLine(VOID); Funkcja ta zwraca string, z wszystykim tym co wpisałeś po nazwie programu, czyli jezeli w linii polecen napisales: "prog.exe param1 param2" to funkcja zwroci: "param1 param2" 2. LPWSTR * CommandLineToArgvW( LPCWSTR lpCmdLine, // pointer to a command-line string int *pNumArgs // receives the argument count ); Funkcja ta pobiera wskazniki do zmiennych, w których umieszcza to, co normalnie znajdowalo by sie kolejno w argv i argc (z tym, ze w formacie wide-char). Martwi mnie tylko jedna linijka na koniec jej opisu: "Windows 95/98/Me: Unsupported." Zachęcam do częstego zaglądania na stronę:https://msdn.microsoft.com/library/ Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 19, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 19, 2018 bialy looz probuje ;] i tak mam XP wiec nie martwi mnie tamta linijka ;] nicon a strstr to nie ze szuka czy jest .exec taki text w stringu?? a jak ebdzie znazwa bla.exe.txt ;?;] Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Phoenix Napisano Czerwiec 19, 2018 Zgłoś Udostępnij Napisano Czerwiec 19, 2018 No i last quastion jak przy main(int argc, char *argv[]); // dla dosowej konsoli main(int argc, char *argv[],*env[]); //dla borlanda wiec jak to pobrac te 3 rzeczy dla borlanda? jesli pisza printf("%d",argc); nie ma ?? ;/ Pierwsza funkcje mozesz stosowac w dosowej konsoli dla kompilatora Visual'a i Borland'a (nie wiem jak jest dla innych) - sprawdzalem i chodzi poprawnie. main(int argc, char * argv[]) { if(!argc[1]) { printf("Nie podano parametru. Koniec programu"); exit(0); } else { printf("Podanie parametru 0: %s", argv[0]); printf("Podanie parametru 1: %s, argv[1]); } return 0; } Musisz pamietac o tym ze wartosc argc jest na poczatku rowna 1, gdyz jest to sciezka do Twojego programu. A parametry w argv sa zawsze podawane jako string, wiec jesli chcesz podac parametr jako liczbe np.: int to nalezy ten parametr zmienic funkcja atoi. Co do sprawdzanie czy dany plik jest exe mozesz sprobowac tak: Kopiujesz nazwe pliku wraz z rozszerzeniem do bufora i odcinasz 4 ostatnie znaki ( rozszerzenie np: ".exe") kiedy to masz porownujesz je czy 4 pobrane znaki sa rowne ".exe". W ten sposob na pewno unikniesz problemow z takimi plikami jak "nazwa_pliku.exe.txt". Sposob ten na pewno idzie przedstawic prosciej, ale to jedyne co aktualnie wpadlo mi do glowy :) Pozdrawiam jesli chcesz moge umiesci Ci kod ktory sprawdza czy dany plik to ".exe". Dzialajacy na zasadach jak opisalem wyzej Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 20, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 20, 2018 xantos wiec ;] dzieki za odp tak na poczatek jesli chodzi o to zrodlo co mi npisales z argc i argv ja to wiem wszytko, lecz w brolandzie i vc++ nie widze funkcj int main() rozumiesz? nie wiem jak i gdzie ja zeedytowac a jesli bym ja zobaczyl i zaedytowal to o\sobie poradze juz lecz jej nie widze... lecz pytanie gdzie jest funkcja int main w borlandzie czy v++ gdzie? ;] bo jak pisze sprintf(buffor."%s",argv[0]); w borlandzie pyta sie mnie ergv nie ma czegos takiego, rozumiesz?? ze nie ma a ja nie widze funckji int main() i nie moge dodac do deklaracji char *argv[]jarzysz? ;]:);]:);]:) a co do tego exe wlasnie nie moge tego zrobic to bym o zrodelko prosil probuje na duzosposobow i cos nie idzie :/ jaki numer kodu ascii ma delete ?? ;] zeby usuwac znaki w konsoli?? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Czerwiec 20, 2018 Zgłoś Udostępnij Napisano Czerwiec 20, 2018 #include <string.h> #include <conio.h> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { char* string="plik.Exe"; string+=strlen(string)-4; if(!stricmp(string,".eXe")) printf("%s",string); getch(); return 0; } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 20, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 20, 2018 dzienx bialy zaraz sprawdze ;] bo qfa masz dobry pomysl ze stringiem :P fakt nie uzywam tego ;] Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Phoenix Napisano Czerwiec 20, 2018 Zgłoś Udostępnij Napisano Czerwiec 20, 2018 lecz w brolandzie i vc++ nie widze funkcj int main() rozumiesz? nie wiem jak i gdzie ja zeedytowac a jesli bym ja zobaczyl i zaedytowal to o\sobie poradze juz lecz jej nie widze... lecz pytanie gdzie jest funkcja int main w borlandzie czy v++ gdzie? Nie za bardzo rozumiem o co chodzi ? Czego nie widzisz ? Jezeli skopiujesz kod i odpalisz pod konsola np. w taki sposob: nazwa_programu.exe parametr, to powinno byc ok. Jezeli masz problem na poziomie kompilacji to sprawdz czy wybrales tworzenie projektu pod konsole. Napisz jakiego kompilatora uzywasz ? wytluamczie nzasady dzilaania continue z break rowne funkcji goto bo ja nie widze podobienstwa :/ Napisze krotko - goto nie powinno sie stosowac poniewaz nie swiadczy to dobrze o programie (programiscie), kod z wieksza ilosci takich instrukcji staje sie bardzo nieczytelny i zawily. Natomiast break uzywa sie do przerwania danej instrukcji takich jak: case, for, while itp. Continue dziala odwrotnie do break :) Pozdrawiam Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 23, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 23, 2018 Co uzywam hmm ;] zalezy od dnia pogody i pomyslu ;) wiec: / Dev-C++ / VC++ 6.0 / BuilderC++ 6.0 / Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.