kopieren von daten - aber mit verschlüsseln !!
-
hallo, ich stehe vor einem problem:
ich will eine datei kopieren, also eine neue erstellen und den inhalt einer bestehenden darein kopieren.
so weit so gut.problem: Ich möchte die daten beim kopieren jedoch etwas verändern, also quasi nicht 1:1 kopieren, sondern verschlüsselt!
Meine Verschlüsselungsmethode: Jeden Buchstaben beim Kopieren um 1 "erhöhen".Sprich aus der Zeile "abCd" der Quelldatei soll dann in der Zieldatei werden:
"bcDe".Ich habe den Tip bekommen, dass das mit putc() funktionieren könnte.
Allerdings weiss ich nicht so recht, wie ich mit den Puffern umgehen soll.
putc meckert dauernd darüber, dass er Pointer statt Integern kriegt
und andersrum. Hier der Fehler:P-1-4-b.c: In function ‘main’: P-1-4-b.c:35: warning: passing argument 1 of ‘_IO_putc’ makes integer from pointer without a cast P-1-4-b.c:35: warning: passing argument 2 of ‘_IO_putc’ makes pointer from integer without a cast
Und das dazugehörige Programm natürlich:
#include <stdio.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> int main(int argc, char *argv[]) { struct stat filestat; stat(argv[1], &filestat); long filesize = filestat.st_size; //Anzahl Bytes d.Quelldatei char zielPuffer[filesize]; //Grösse Quelle = Grösse Ziel char quellPuffer[filesize]; //Puffer f. Quellinhalt int source = open(argv[1],O_RDWR, S_IRWXU); //Quelldatei öffnen int destination = open(argv[2],O_RDWR|O_CREAT, S_IRWXU); putc(quellPuffer,destination); //Inhalt verschlüsseln... strcpy(zielPuffer,quellPuffer); //...und in den Puffer schreiben write(destination, &zielPuffer,sizeof(zielPuffer)); return 0; }
Wäre verdammt nett, wenn mir einer es etwas näher bringen könnte, wie
genau ich eine Kommunikation zwischen Puffern und der putc Funktion
herstellen kann. Dankeschön, super Forum btw
-
also nach c# oder net sieht das nciht aus!
Mchst du c++ oder c? (sieht nach c aus?)!
Lass dich ins richtige forum verschieben, da kann die besser geholfen werden
-
oh.
ich dachte c# soll c heissen :p
ich hab eigentlich gekuckt, aber keine rubrik für 'c' gefunden...
hab ich wohl übersehen?Entschuldige, dann bitte ich hiermit einen Mod, das zu verschieben.
Danke!
-
Hallo
Wie wäre es mit ANSI C?
chrische
-
hey, ja habe ich jetzt auch gesehen.
durch das ANSI ist das c irgendwie untergegangensoll ich dort nen neuen thread aufmachen und hierher verlinken?
weil irgendwie verschiebt das niemand scheinbar.
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Deine Vorgehensweise erscheint mir etwas zu kompliziert (mit 2 Puffern).
Du brauchst eigentlich nur einen Puffer, darin liest du blockweise (z.B. in 1K Schritten) die Quelldaten ein, dann bearbeitest du diesen Puffer, und anschließend schreibst du diese geänderten Daten in die 2. Datei.
Für das Lesen und Schreiben nimm am besten die Funktionen read und write (sehe gerade: write hast du ja schon, also nur noch read voranstellen -).
(und putc hat nichts mit verschlüsseln zu tun, sondern sie gibt einfach ein Zeichen in eine Datei aus).
-
hi!
also verstehe ich das richtig: du willst zusätzlich noch read() benutzen?
weil putc() will ich auf jeden fall benutzen, weil es mir wichtig ist die funktion zu erlernen und damit möglichst viel zu machen!
dass es mit verschlüsseln nix zu tun hat, weiss ich.aber ich meinte damit halt, dass ich nicht genau weiss, wie ich mit putc veränderte daten schreiben soll.
denn putc() nimmt ja irgendwie keinen puffer als parameter an, zumindest wüsste ich nicht wie. den tipp, den ich bräuchte, wäre also:
wie kann ich daten, die von der quelldatei in einen puffer geschrieben wurde, verändern, zurück in den puffer schreiben, und vorallem wie kann ich mittels putc() von diesem puffer lesen und das ganze in eine zieldatei schreiben?
bin noch ziemlicher neuling und blicke noch nicht so ganz durch, was denn die tiefere bedeutung der parameter bei read(), write() und putc() ist...
hab mir schon beispiele angeschaut, aber entweder sie gehen nicht darauf ein oder sind unheimlich kompliziert
-
putc gibt ein einzelnes zeichen aus. wenn du es unbedingt mit putc machen willst, musst du halt deinen puffer in einer schleife durchlaufen und darin putc aufrufen. verstehst du