PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [source] Kommando-zeilen Kopierer



]=-antr4xx-=[
06.07.2007, 20:42
Da ich gerade mit C programmieren angefangen habe, und denke, dass viele gerade dabei sind, werde ich, sofern es erlaubt ist meine Sources hier posten, Kritik ist erwünscht. Alles steht unter der GPL.


/*copy.c*/

#include <stdio.h>
#include <stdlib.h>

void cpy(const char *q, const char *z); //sorry, falsch -->void cpy();

int main(int argc, char *argv[])
{

if(argc >= 3)
cpy(argv[1], argv[2]);
else if(argc == 2)
cpy(argv[1], "kopie.ac");
else
fprintf(stderr, "Usage : %s <quelle> <ziel>\n", *argv);

printf("Press ENTER to continue...\n");
getchar();
return 0;
}

void cpy(const char *q, const char *z)
{
FILE *quelle, *ziel;
char c;

quelle = fopen(q, "r");

if(quelle == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu lesenden Datei...\n");
return;
}
ziel = fopen(z, "a+");

if(ziel == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu schreibenden Datei...\n");
return;
}



while((c = fgetc(quelle)) != EOF)
{
fputc(c, ziel);
}
}

habs auch noch auf rapidshare gestellt die exe, kann ja jemand prüfen oder selbst kopilieren, ist 100%ig clean:http://rapidshare.com/files/41416075/copy.exe.html

rob00n
07.07.2007, 13:00
lol, schöner source fürn anfang ;)

aber beim compilen kackt mein compiler ab, vonwegen zuviel parameter in der funkiton cpy() obwohl du alles richtig gemacht hast mit dem prototyp und so... (wenn ich die cpy() oben reinpack funzt es aber...)

sonst funzt es xD

-[RiDER]-
07.07.2007, 14:19
nee, grade der prototyp is falsch :wink:

void cpy(const char *q, const char *z);
so müsster sein. manche compiler machen sonst probleme...

MfG RiDER

Nemo.A
07.07.2007, 15:27
so müsster sein. manche compiler machen sonst probleme...
Sollte eigentlich jeder C-Compiler machen. Bei C++ sieht das wieder anders aus.

PeNn0r
07.07.2007, 17:08
kA.. eig schon

]=-antr4xx-=[
08.07.2007, 18:16
Und gleich noch einer. Prinzip ist der gleiche, die datei ik ersten argument wird überwacht, und ganz in die Datei des 2. arguments kopiert, nur dass die 2. datei bei jedem Speichern der 1. aktualisiert wird.

sorry für die schlechte formulierung


/*infinite_copy.c*/

#include <stdio.h>
#include <stdlib.h>

void infinite_copy(const char *q, const char *z);

int main(int argc, char *argv[])
{
char ziel_string[20];

if(argc >= 3)
infinite_copy(argv[1], argv[2]);
else if(argc == 2)
{
printf("Ziel:...");
scanf("%s", ziel_string);
infinite_copy(argv[1], ziel_string);
}
else
fprintf(stderr, "Usage : %s <Überwachungsdatei> <ziel>\n", *argv);

printf("Press ENTER to continue...\n");
getchar();
return 0;
}

void infinite_copy(const char *q, const char *z)
{
FILE *quelle, *ziel;
char c;

quelle = fopen(q, "r");

if(quelle == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu lesenden Datei...\n");
return;
}
ziel = fopen(z, "a+");

if(ziel == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu schreibenden Datei...\n");
return;
}



while(1)
{
ziel = fopen(z, "a+");

if(ziel == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu schreibenden Datei...\n");
return;
}

c = fgetc(quelle);

if(c == EOF)
ungetc(c, quelle);
else
{
fputc(c, ziel);
fputc(c, stdout);
}
fclose(ziel);
}
}

born2die
08.07.2007, 19:35
Blöde frage aber ich versteh das jetzt so: die exe kopiert alles aus der CMD in eine Datei oder? Wenn ja nice.

-[RiDER]-
08.07.2007, 19:46
geht das nicht per >> datei

c:\>blubberprogramm >> log.txt
also output in datei schreiben...

aber als "überwachung" is kewl^^

MfG RiDER

]=-antr4xx-=[
09.07.2007, 14:10
Blöde frage aber ich versteh das jetzt so: die exe kopiert alles aus der CMD in eine Datei oder? Wenn ja nice.
Nee, kopiert wird von der ersten Datei in die zweite!, und die 2. wird nach jedem speichern der 1. aktualisiert.


geht das nicht per >> datei Code:
c:\>blubberprogramm >> log.txt


also output in datei schreiben...

aber als "überwachung" is kewl^^

MfG RiDER

ja, so geht es auch, dann muss man aber noch was in die Konsole eingeben, so ist weniger umständlich.



Wenn Interesse besteht, dass ich alle Programme hochlade, denn meldet euch bitte per PM...

rob00n
09.07.2007, 14:27
=-antr4xx-=[]
Wenn Interesse besteht, dass ich alle Programme hochlade, denn meldet euch bitte per PM...
sorry wenn ich jetzt aufm schlauch steh aber was meinste mit "alle programme" ?

]=-antr4xx-=[
09.07.2007, 20:51
]=-antr4xx-=[ hat Folgendes geschrieben:

Wenn Interesse besteht, dass ich alle Programme hochlade, denn meldet euch bitte per PM...


sorry wenn ich jetzt aufm schlauch steh aber was meinste mit "alle programme" ?

Ich habe hier 2 veröffentlicht, das 3. habe ich gerade geschrieben und getestet, poste ich jetzt auch noch.

Hier könnt ihr meine bisherigen 3 Programme runterladen(mit Quellcode):http://rapidshare.com/files/41977648/pack_1_by_antr4xx.rar.html sind nur 16 KB.





-------------------------------------------------------------------------
So hier das dritte:
Es kopiert die Quelldatei, nur dass es o und O duch 0 ersetzt, f durch ph, e und E durch 3 etc, wandelt also in "hackserscrip"t um


#include <stdio.h>
#include <stdlib.h>

void script(const char quelle[], const char ziel[]);

int main(int argc, char *argv[])
{
char q[100], z[100];

if(argc == 1)
{
printf("Quelldatei:...");
scanf("%s", q);
printf("Zieldatei:...");
scanf("%s", z);
script(q, z);
}
else if(argc == 2)
{
printf("Zieldatei:...");
scanf("%s", z);
script(argv[1], z);
}
else
script(argv[1], argv[2]);


system("PAUSE");
return 0;
}

void script(const char quelle[], const char ziel[])
{
FILE *q, *z;
char c;

q = fopen(quelle, "r");
if(q == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu lesenden Datei...");
return;
}

z = fopen(ziel, "w+");
if(z == NULL)
{
fprintf(stderr, "Fehler beim Öffnen der zu lesenden Datei...");
return;
}

while((c = fgetc(q)) != EOF)
{
if(c == 'o' || c == 'O')
fputc('0', z);
else if(c == 'e' || c == 'E')
fputc('3', z);
else if(c == 'f' || c == 'F')
{
fputc('p', z);
fputc('h', z);
}
else
fputc(c, z);
}
fclose(z);
fclose(q);
}