Skocz do zawartości

strcpy();


Specter

Recommended Posts

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ę.

Link do komentarza
Udostępnij na innych stronach

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 :)

Link do komentarza
Udostępnij na innych stronach

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...

Link do komentarza
Udostępnij na innych stronach

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 :)

Link do komentarza
Udostępnij na innych stronach

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/ :S

Link do komentarza
Udostępnij na innych stronach

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

Link do komentarza
Udostępnij na innych stronach

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??

Link do komentarza
Udostępnij na innych stronach

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

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...