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-ID: 80564

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

Ausgedruckt am: 16.11.2024 um 09:11 Uhr

miniversum
miniversum 12.02.2008 um 15:07:29 Uhr
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
Michi262
Michi262 12.02.2008 um 15:40:11 Uhr
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?
miniversum
miniversum 12.02.2008 um 15:55:32 Uhr
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)
Michi262
Michi262 12.02.2008 um 23:56:04 Uhr
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^^
miniversum
miniversum 13.02.2008 um 11:53:33 Uhr
Goto Top
ja fast. in C muß man \ durch \\ ersetzen. Also "C:\\Programme\\test.txt"
Michi262
Michi262 13.02.2008 um 23:30:30 Uhr
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
miniversum
miniversum 14.02.2008 um 11:16:03 Uhr
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
Michi262
Michi262 14.02.2008 um 14:47:24 Uhr
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
miniversum
miniversum 14.02.2008 um 16:30:32 Uhr
Goto Top
Versuchs mal mit
system("cmd /k meldung.cmd");
miniversum
Michi262
Michi262 21.02.2008 um 09:03:37 Uhr
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
miniversum
miniversum 21.02.2008 um 13:07:21 Uhr
Goto Top
Eigentlich genauso.
Schonmal so versucht?:
system("programm.exe");
Michi262
Michi262 21.02.2008 um 14:23:42 Uhr
Goto Top
ja so hab ich´s schon versucht. aber da passierte wie bei der *.cmd datei auch nix
miniversum
miniversum 21.02.2008 um 14:40:49 Uhr
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
Michi262
Michi262 21.02.2008 um 19:30:37 Uhr
Goto Top
das probelm ist bei mir liegt die *.exe in einem ordern, der im Dateinamen Leerzeichen beinhaltet. könnte dies die Fehlerquelle sein???
miniversum
miniversum 22.02.2008 um 09:26:53 Uhr
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
Michi262
Michi262 22.02.2008 um 20:48:47 Uhr
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;
}
miniversum
miniversum 23.02.2008 um 10:36:22 Uhr
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
Michi262
Michi262 23.02.2008 um 12:42:31 Uhr
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
miniversum
miniversum 27.02.2008 um 09:41:02 Uhr
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.
Michi262
Michi262 27.02.2008 um 15:03:22 Uhr
Goto Top
ok. danke wer´s gleich mal testen

edit:

der startet mir die wow.exe nicht face-sad
Michi262
Michi262 29.02.2008 um 15:20:48 Uhr
Goto Top
ich push hier ma weil nix kommt face-smile
miniversum
miniversum 29.02.2008 um 16:00:05 Uhr
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.
Michi262
Michi262 02.03.2008 um 17:32:26 Uhr
Goto Top
lol. der code geht bei mir auch net face-sad
miniversum
miniversum 02.03.2008 um 17:50:49 Uhr
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.
Michi262
Michi262 04.03.2008 um 23:18:47 Uhr
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
miniversum
miniversum 05.03.2008 um 09:08:15 Uhr
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?
Michi262
Michi262 05.03.2008 um 15:11:20 Uhr
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
miniversum
miniversum 05.03.2008 um 19:07:31 Uhr
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.
Michi262
Michi262 06.03.2008 um 00:01:28 Uhr
Goto Top
gibt es dann was vergleichbares das du kannst?
miniversum
miniversum 06.03.2008 um 10:12:12 Uhr
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
Michi262
Michi262 07.03.2008 um 23:17:33 Uhr
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
Michi262
Michi262 08.03.2008 um 17:21:25 Uhr
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
miniversum
miniversum 08.03.2008 um 17:32:34 Uhr
Goto Top
Michi262
Michi262 08.03.2008 um 20:46:30 Uhr
Goto Top
ok. danke werde ich dann gleich mal testen. hoffentlich klappts