michi262
Goto Top

4 Fragen zur C Programmierung

Textdatei in einem Verzeichniss erstellen
Textdatei löschen
Variable aus Textdatei auslesen
wget ansteuern

Hi,

ich hab 4 fragen:

1. Wie kann ich eine Textdatei (.*wtf) die einen Text enthält in einem Verzeichnis erstellen?
z.B soll die datei test.wtf unter "C:\Programme\test" erstellt werden un diesen Text beinhalten: Text

2. Wie kann ich diese Textdatei wieder löschen?

3. wie kann ich eine Variable aus einer Textdatei auslesen?

4. Wie steuere ich das Program wget ( http://users.ugent.be/~bpuype/wget/#download ) mit C an? Oder gibt es unter C einen eigenen
Befehl dafür?

MFG Michi262

PS: Danke an alle die mir helfen

Content-Key: 80564

Url: https://administrator.de/contentid/80564

Printed on: April 25, 2024 at 09:04 o'clock

Member: miniversum
miniversum Feb 12, 2008 at 14:07:29 (UTC)
Goto Top
Lies dir mal das hier, und due Doku zu den dort aufgeführten Befehlen durch.
http://www.cplusplus.com/reference/clibrary/cstdio/

Da findest Du auch Codebeispiele.

miniversum
Member: Michi262
Michi262 Feb 12, 2008 at 14:40:11 (UTC)
Goto Top
das steh auch nur wie ich eine Textdatei erstelle + entferne.

Aber ich weiß nicht wie ich diese in ein anderes Verzeichnis bekomme.

wie ich eine Variable auslese hab ich gefunden.

also nun eine Aktualisierung der Fragen:

1. Wie bekomm ich eine erstellte Texdatei in ein ander Verzeichnissß

2. wie lösche ich die Datei aus dem Verzeichniss wieder?

3. Wie steuere ich das Program wget ( http://users.ugent.be/~bpuype/wget/#download ) mit C
an? Oder gibt es unter C einen eigenen Befehl dafür?
Member: miniversum
miniversum Feb 12, 2008 at 14:55:32 (UTC)
Goto Top
Aber ich weiß nicht wie ich diese in ein anderes Verzeichnis bekomme.

1. Wie bekomm ich eine erstellte Texdatei in ein ander Verzeichnissß

2. wie lösche ich die Datei aus dem Verzeichniss wieder?

Indem du nicht nur den Dateinamen angibst sondern eben noch zusätzlich das Laufwerk\das Verzeichnis. (L:\verzeichnis\datei.ext)
Member: Michi262
Michi262 Feb 12, 2008 at 22:56:04 (UTC)
Goto Top
so?

{
	FILE* fTest = fopen("C:\Programme\test.txt","w+t");  
	fprintf(fTest,"blablabla");  

   return 0;
}

weil bei mir kommt da immer n errror^^
Member: miniversum
miniversum Feb 13, 2008 at 10:53:33 (UTC)
Goto Top
ja fast. in C muß man \ durch \\ ersetzen. Also "C:\\Programme\\test.txt"
Member: Michi262
Michi262 Feb 13, 2008 at 22:30:30 (UTC)
Goto Top
jop. thx es funktioniert

weiß dann noch wer, wie ich das Program wget ( http://users.ugent.be/~bpuype/wget/#download ) mit C ansteure?

hier hab ich noch ein Problem:

#include <windows.h>
#include <stdio.h>

int main ()
{
  FILE * pFile;
  int c;
  pFile=fopen ("test.txt","r");  
  if (pFile==NULL) perror ("Error opening file");  
  else
  {
    do {
      c = fgetc (pFile);

      if (c == 20) printf ("");  
     }while (c != 20);
    fclose (pFile);
    system("meldung.cmd");  
  }
  return 0;
}

in der Datei meldung.cmd ist folgendes enthalten:

@echo off

set "tmpvbs=%temp%\tmpvbs.vbs"  
echo WScript.Echo msgbox("Es ist ein neues Update vorhanden. Bitte klicken Sie auf OK. Das Passwort für das Archiv ist ****.", vbOKCancel, "Update") >"%tmpvbs%"  
for /f "delims=" %%i in ('cscript //nologo "%tmpvbs%"') do set "ans=%%i"  
del "%tmpvbs%"  
if %ans% equ 1 start "" /d"%HOMEDRIVE%%HOMEPATH%" "C:\Programme\WOW Spezial Starter\Data\update.html"  

kann mir da pls auch noch einer helfen?

MFG Michi262
Member: miniversum
miniversum Feb 14, 2008 at 10:16:03 (UTC)
Goto Top
Was ist daran das Problem? Willst du das ganze ohne meldung.cmd machen und in c nachprogramieren oder was geht daran nicht?

wget kanst du ja auch über system starten.
Also system("wget.exe");
Aber eine elegantere Lösung ist es den sourcecode von wget zu nehmen (z.B. von hier http://www.gnu.org/software/wget/ ) und ihn direkt mit einzubinden.

miniversum
Member: Michi262
Michi262 Feb 14, 2008 at 13:47:24 (UTC)
Goto Top
Was ist daran das Problem? Willst du das
ganze ohne meldung.cmd machen und in c
nachprogramieren oder was geht daran nicht?


der startet mir meldung.cmd nicht
Member: miniversum
miniversum Feb 14, 2008 at 15:30:32 (UTC)
Goto Top
Versuchs mal mit
system("cmd /k meldung.cmd");
miniversum
Member: Michi262
Michi262 Feb 21, 2008 at 08:03:37 (UTC)
Goto Top
hi @ all

entschuldigt das ich so lange nicht geantwortet habe aber ich lag mit grippe im bett.

nun möchte dich das ganze mit einer *.exe Datei machen.

wie funktioniert den das?

MFG Michi262
Member: miniversum
miniversum Feb 21, 2008 at 12:07:21 (UTC)
Goto Top
Eigentlich genauso.
Schonmal so versucht?:
system("programm.exe");
Member: Michi262
Michi262 Feb 21, 2008 at 13:23:42 (UTC)
Goto Top
ja so hab ich´s schon versucht. aber da passierte wie bei der *.cmd datei auch nix
Member: miniversum
miniversum Feb 21, 2008 at 13:40:49 (UTC)
Goto Top
Habs grade mal mit dem Dev-C++ ausprobiert.
So geht es bei mir:
system("cmd /c meldung.cmd");
oder:
system("meldung.cmd");
oder:
system("notepad.exe");
miniversum
Member: Michi262
Michi262 Feb 21, 2008 at 18:30:37 (UTC)
Goto Top
das probelm ist bei mir liegt die *.exe in einem ordern, der im Dateinamen Leerzeichen beinhaltet. könnte dies die Fehlerquelle sein???
Member: miniversum
miniversum Feb 22, 2008 at 08:26:53 (UTC)
Goto Top
Ja.
Normalerweise musst du dann das Ganze in Anführungszeichen setzen.
Da aber schon beim system Befehl ansich die Befehlszeile in Anführungszeichen steht und es so sonst zu Problemen kommt müssen die zusätzlichen Anführungszeichen mit einem zusätzlichen "\" ausmaskiert werden. Die Benötigst du auch bei den "\". Dazu kannst Du mal das hier anschauen: http://tutorial.schornboeck.net/escape.htm :
Aufruf von der cmd aus:
"C:\das ist das Programm\mein programm.exe"
In C dann:
system("\"C:\\das ist das Programm\\mein programm.exe\"");
miniversum
Member: Michi262
Michi262 Feb 22, 2008 at 19:48:47 (UTC)
Goto Top
Ok. ich werds versuchen. melde mich gleich wieder.

weild as mit den " bin ich ja aus Batch gewohnt aber das hat er nicht gefressen^^

edit:

thx da programm startet.

aber das mit der Variable geht noch net.

Kann da wer bitte nen blick drauf werfen?

#include <windows.h>
#include <stdio.h>

int main ()
{
  int c;
  FILE * pFile;
  pFile=fopen ("test.txt","r");  
  if (pFile==NULL) perror ("Version kann nicht überprüft weden!!");  
  else
  {
    do {
      c = fgetc (pFile);
      if (c == 2.0) system("\"C:\\das ist das Programm\\mein programm.exe\"");  
     }while (c != 2.0);
    fclose (pFile);
    system("meldung.cmd");  
  }
  return 0;
}
Member: miniversum
miniversum Feb 23, 2008 at 09:36:22 (UTC)
Goto Top
Das problem liegt hier:
c = fgetc (pFile);
if (c == 2.0)
Genaugenommen sind es zwei.
Mit fgetc werden immer einzelne Zeichen eingelesen, keine Zeichenketten. Siehe hier: http://www.cplusplus.com/reference/clibrary/cstdio/fgetc.html
Wenn du mehrere Zeichen als string einlesen willst ist dann besser endweder die Funktion
fscanf ( http://www.cplusplus.com/reference/clibrary/cstdio/fscanf.html )
oder
fgets ( http://www.cplusplus.com/reference/clibrary/cstdio/fgets.html )
geeignet.

Das zweite Problem ist dann der Vergleich. mit einem
if (c == 2.0)
würde dir das Zeichen das in c steht mit dem Zeichen vergleichen das den ascii Code 2 hat. Willst du ein einzelnes Zeichen mit einem andern vergleichen müßte das su aussehen:
if (c == '2')
Bei strings wäre ein Vergleich so durchzuführen:
if (c == "2.0")

miniversum
Member: Michi262
Michi262 Feb 23, 2008 at 11:42:31 (UTC)
Goto Top
achso. ok danke. werde es mal nacher Versuchen weil ich jetzt weg muss.

edit:

ich hab´s jetzt mal mit

#include <stdio.h>
#include <windows.h>

int main()
{
   FILE * pFile;
   char string [100];

   pFile = fopen ("test.txt" , "r");  
   if (pFile == NULL) perror ("Error opening file");  
   else {
     fgets (string , 100 , pFile);
     puts (string);
     fclose (pFile);
	 if (string == "2.0") system("\"C:\\Programme\\World of Warcraft\\WoW.exe\"");  
   }
   return 0;
}

verscuht. aber irgendwie ohne erfolg face-sad
Member: miniversum
miniversum Feb 27, 2008 at 08:41:02 (UTC)
Goto Top
So gehts:
#include <stdio.h>
#include <windows.h>

int main()
{
   FILE * pFile;
   char string [100];

   pFile = fopen ("test.txt" , "r");  
   if (pFile == NULL) perror ("Error opening file");  
   else {
     fgets (string , 5 , pFile);
     puts(string);
     fclose (pFile);
	 if (strcmp(string,"2.0") != 0)   
        system("\"C:\\Programme\\World of Warcraft\\WoW.exe\"");  
                
   }
   system("PAUSE");  
   return 0;
}
der Vergleich der strings sollte man mit strcmp machen. Da war ich jetzt auch nicht aufmerksam genug.
Member: Michi262
Michi262 Feb 27, 2008 at 14:03:22 (UTC)
Goto Top
ok. danke wer´s gleich mal testen

edit:

der startet mir die wow.exe nicht face-sad
Member: Michi262
Michi262 Feb 29, 2008 at 14:20:48 (UTC)
Goto Top
ich push hier ma weil nix kommt face-smile
Member: miniversum
miniversum Feb 29, 2008 at 15:00:05 (UTC)
Goto Top
Da ich hier kein WOW habe hab ichs mal mit dem Mediaplayer getestet.
#include <stdio.h>
#include <windows.h>

int main()
{
   FILE * pFile;
   char string [100];

   pFile = fopen ("test.txt" , "r");  
   if (pFile == NULL) perror ("Error opening file");  
   else {
     fgets (string , 5 , pFile);
     puts(string);
     fclose (pFile);
     if (strcmp(string,"2.0") != 0) {  
        puts("Programm wird gestartet");  
        system("\"E:\\Programme\\Windows Media Player\\wmplayer.exe\"");  
     }
   }
   system("PAUSE");  
   return 0;
}
Dieser Code funktioniert bei mir.
Die Datei test.txt liegt im gleichen Verzeichnis wie die Exe Datei des Programms. Ich kann also keinen Fehler finden.
Member: Michi262
Michi262 Mar 02, 2008 at 16:32:26 (UTC)
Goto Top
lol. der code geht bei mir auch net face-sad
Member: miniversum
miniversum Mar 02, 2008 at 16:50:49 (UTC)
Goto Top
Also wenn ich bei mir mein DEV C++ starte, ein neues C++ Projekt anlege, dann den Code so reinkopiere und auf compilieren klicke läuft das Programm. Ich kanns echt nicht nachvollziehen.
Member: Michi262
Michi262 Mar 04, 2008 at 22:18:47 (UTC)
Goto Top
ja das ist schon komisch. ich arbeite mit lcc.

wie müsste denm der code heißen wenn er eine varable aus lesen soll und das programm im qellcode weiterlaufen soll. außer die variable stimmt nicht dann soll eine Fehlermeldung erscheinen mit einem Button (wo am besten draufsteht "Update").

MFg Michi26206
Member: miniversum
miniversum Mar 05, 2008 at 08:08:15 (UTC)
Goto Top
Wie meinst du das ne Variable auslesen?

Wenn Du buttons willst dann solltst du visual studio oder so nehmen.

Hast du es den mal mit DEV-C++ versucht ob es da bei dir geht?
Member: Michi262
Michi262 Mar 05, 2008 at 14:11:20 (UTC)
Goto Top
ne mit DEV-C++ hab ich´s nicht versucht.

Also ich will mit wget wieder die Datei version.txt aus dem Internet laden. dann soll das Programm überprüfen ob die Variabel mit der die im Programm steht übereinstimmt oder nicht. Wenn sie stimmt läuft das Programm weiter. Wenn sie nicht stimmt soll ein Fenster mit der Nachricht: "Es ist ein neues Update vorhanden. Bitte laden Sie sich das Update." und darunter ein Button auf dem steht "Update" der dann auf eine Internetseite führen soll

Bild:

[url]http://img507.imageshack.us/my.php?image=updatezl1.png[/url]

PS: entschuldigt die [url] aber wenn ich die weg lasse zeigt er nich den link face-sad face-sad
Member: miniversum
miniversum Mar 05, 2008 at 18:07:31 (UTC)
Goto Top
Für so ein Fenster brauchst du dann visual c++ express oder was vergleichbares.
dann kanst du damit das fenster entwerfen und anzeigen lassen.
Aber da bin ich dann überfragt weil ich für so sachen nie c++ nehme.
Member: Michi262
Michi262 Mar 05, 2008 at 23:01:28 (UTC)
Goto Top
gibt es dann was vergleichbares das du kannst?
Member: miniversum
miniversum Mar 06, 2008 at 09:12:12 (UTC)
Goto Top
nein ich kenn nichts vergleichbares. Aber wie gesagt ich machen in c++ eigentlich nie was mit Fenstern.

die express version vom VS ist ja kostenlos
Member: Michi262
Michi262 Mar 07, 2008 at 22:17:33 (UTC)
Goto Top
ach so ok. ich hscu mal nach einer alternative. wenn ich was brauche melde ich mich

MFG Michi262

PS: danke mal für alles
Member: Michi262
Michi262 Mar 08, 2008 at 16:21:25 (UTC)
Goto Top
sry wegen doppelpost.

kannst du mir den wget cod pls geben?
ich finde ihn nicht unter den vielen angebotenen sachen face-sad

MFG Michi262
Member: miniversum
miniversum Mar 08, 2008 at 16:32:34 (UTC)
Goto Top
Member: Michi262
Michi262 Mar 08, 2008 at 19:46:30 (UTC)
Goto Top
ok. danke werde ich dann gleich mal testen. hoffentlich klappts