Problem beim ersten Programm :(

01/01/2007 03:00 Behemoth-RO#1
Hallo alle zusammen und ein Happy new Year...

Nach dem ich nun schon knapp ne Woche c++ lerne hab ich mir vor 2 Tagen gedacht, wie wäre ein Netsettings Generator für CS:S. Gesagt getan und nun bin ich schon fast fertig das einzigste Problem was ich habe ist folgendes

Ich möchte die Netsettings ins Verzeichnis C:/ abspeichern klappt auch alles wunderschön auser...
er macht einfach keinen Zeilenumbruch. Hab schon relativ viel versucht aber leider keinen erfolg ^^

Hier mal der Code zum abspeichern
Code:
case 1:
 cout<<"Sie haben DSL 1000 ausgewählt"<<endl<<endl;
 // start schreibe
fp = fopen("netsettings.cfg","w");
fprintf(fp, "test");
fclose(fp);
 //end schreibe
break;
hoffe könnt mir helfen dürfte ja nicht sehr schwer sein xD

mfg
Fata
01/01/2007 03:29 Maybe It's Maybelline#2
Mit /n bekommst du einen neuen Absatz... Sofern Ich mich noch erinnern kann.
01/01/2007 03:34 Behemoth-RO#3
ne hab ich leider schon probiert :)
bewirkt ja nen Zeilenumsprung im Programm aber nicht in der Textdatei :(
umstieg von visual basic auf c++ is schwerer als ich gedacht hab ^^
01/01/2007 17:59 mr.rattlz#4
Quote:
Originally posted by Maybe It's Maybelline@Jan 1 2007, 03:29
Mit /n bekommst du einen neuen Absatz... Sofern Ich mich noch erinnern kann.
Fast richtig, der escape character, ist aber gemeinhin ein Backslash, kein Slash ;)
Also \n
01/01/2007 19:01 Behemoth-RO#5
mh glaub ich hab mich falsch ausgedrückt ^^
ich möchte nicht das er in der Console nen Zeilenumbruch macht
sondern in der Textdatei ^^
das funtzt leider mit /n nicht

//edit habs nun geschafft und zwar damit ^^

Code:
case 1:
cout<<"Sie haben DSL 1000 gewählt."<<endl;
cout<<"Ihre Netsettings werden erstellt und in das Verzeichnis C:/ abgespeichert"<<endl;
ofstream fout( "C:/Text.txt" );
fout << "Test1";
fout << endl;
fout << "Test2 Zele 2";
break;
nun hab ich deswegen aber wieder nen problem :D
und zwar sind die commands für cs meistens so aufgebaut
cl_smoothtime "0.1"
aber ich kann leider nicht
fout << "cl_smoothtime "0.1""; schreiben :o also wie krieg ich die " da rein :?
01/02/2007 11:50 Maybe It's Maybelline#6
Quote:
Originally posted by Behemoth-RO@Jan 1 2007, 19:01
nun hab ich deswegen aber wieder nen problem :D
und zwar sind die commands für cs meistens so aufgebaut
cl_smoothtime "0.1"
aber ich kann leider nicht
fout << "cl_smoothtime "0.1""; schreiben :o also wie krieg ich die " da rein :?
Schon probiert mit dem ASCII Hex/Dez? Schau auf einer Zeichentabelle nach.
01/02/2007 15:34 x]vIrus[x#7
"&#092;"Hallo&#092;""


/edit ich würde für fileediting die funktionen fputc ( 1 zeichen in datei schreiben ),fputs ( string in datei schreiben ),fgetc(1 zeichen auslesen),fgets(string auslesen entweder bis zeilenende oder max n zeichen) und fwrite(binärdaten schreiben) und fread(binärdaten lesen) benutzen :)

/edit2, das mit dem &#092;n ist auch ein zeilenumbruch in einer Datei, crlf ( carriage return / line feed ) steht für "&#092;n", das sind 2 zeichen ( ascii: 13 und 10 ) muss also als string eingetragen werden oder 2 ma als einzelnes Zeichen ( 13 danach 10 ) :) hf



Code:
//---------------------------------------------------------------------------

#pragma hdrstop
#include &#60;stdio.h>
#include &#60;conio.h>
#include &#60;string.h>
#include &#60;SysUtils.hpp>

//---------------------------------------------------------------------------

#pragma argsused
int main&#40;int argc, char* argv&#91;&#93;&#41;
{
 FILE *Fp;
 char x&#91;512&#93;;
 clrscr&#40;&#41;;
 printf&#40;&#34; dateiname &#58;&#34;&#41;;
 scanf&#40;&#34;%s&#34;,x&#41;;
 Fp=fopen&#40;x,&#34;w&#34;&#41;;
 if &#40;Fp==0&#41; // wenn fp 0 ist dann ist das öffnen / erstellen der datei fehlgeschlagen
 {
  printf&#40;&#34; error&#34;&#41;;
  getch&#40;&#41;;
 }
 else
 {
  printf&#40;&#34; text&#58; &#34;&#41;;
  gets&#40;x&#41;;
  strcat&#40;x,&#34;&#092;n&#34;&#41;;
  while&#40;x&#91;0&#93;!='&#092;t'&#41; //so lange text einlesen und schreiben bis der user &#092;t eingibt &#40; tabulator &#41;
  {
   fputs&#40;x,Fp&#41;;
   gets&#40;x&#41;;     //eingabe eines strings in die addresse x &#40; der name eines arrays ist die startaddresse dessen &#41;
   //strcat&#40;x,&#34;&#092;n&#34;&#41;;
  }
  fflush&#40;stdin&#41;;
 }
 fclose&#40;Fp&#41;;
 printf&#40;&#34;ende mit beliebiger taste&#34;&#41;;
 getch&#40;&#41;;
 return 0;
}
//---------------------------------------------------------------------------
kleines beispiel mit fputs, bisschen kommentiert, extra für dich <3



öhm, beispiel mit fwrite / fread ( binärdatei ) wenn zweifel besteht, dann melden ansonsten selbst nachvollziehen und testen :p
Code:
//----------------------------------------

#include &#60;conio.h>
#include &#60;stdio.h>
#include &#60;stdlib.h>
#include &#60;condefs.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
void dateierzeugehn&#40;FILE*&#41;;
void auslesung&#40;FILE*&#41;;
void menu&#40;FILE*&#41;;
   void lkghhd&#40;FILE*&#41;;
int main&#40;int argc, char* argv&#91;&#93;&#41;
{
 FILE *fp;
 menu&#40;fp&#41;;

 getch&#40;&#41;;
 return 0;
}
void menu&#40;FILE* f_fp&#41;
{
 while &#40;true&#41;
 {
  clrscr&#40;&#41;;
  printf&#40;&#34;Auswahl &#91; &#93;&#58;&#092;n&#34;&#41;;
  printf&#40;&#34;1.Dateierzeuen&#092;n2.Auslesen&#092;n3.Bestimmte Zahl auslesen&#092;n&#34;&#41;;
  unsigned char v;
  do
  {
   gotoxy&#40;10,1&#41;;
   fflush&#40;stdin&#41;;
   v=getch&#40;&#41;;
   printf&#40;&#34;%c&#34;,v&#41;;
  }
  while&#40;&#40;v!= '1'&#41; && &#40;v!= '2'&#41; && &#40;v!='3'&#41;&#41;;
  switch&#40;v&#41;
  {
   case '1'&#58; dateierzeugehn&#40;f_fp&#41;;
   break;
   case '2'&#58; auslesung&#40;f_fp&#41;;
   break;
   case '3'&#58; lkghhd&#40;f_fp&#41;;
   break;
  }
 }
}

void lkghhd&#40;FILE* f_fp&#41;
{
printf&#40;&#34;DGFDFDFGF&#34;&#41;;
 f_fp = fopen&#40;&#34;bla.dat&#34;,&#34;rb&#34;&#41;;
 int zahl, i;
 if &#40; f_fp == NULL &#41; { printf&#40;&#34;fehler&#092;n&#34;&#41;; }
 else
 {
 printf&#40;&#34;Waehlen sie den Datensatz aus&#092;n&#34;&#41;;
  for &#40;i=0; !feof&#40;f_fp&#41;;i++ &#41;
  {
   fread&#40;&zahl,4,1,f_fp&#41;;
    printf&#40;&#34;%i. Datensatz&#092;n&#34;,i&#41;;
  }
  fclose&#40;f_fp&#41;;
 }
 clrscr&#40;&#41;;

 f_fp = fopen&#40;&#34;bla.dat&#34;,&#34;rb&#34;&#41;;
 if &#40; f_fp == NULL &#41; { printf&#40;&#34;fehler&#092;n&#34;&#41;; }
 else
 {
  while &#40; !feof&#40;f_fp&#41; &#41;
  {
   fread&#40;&zahl,4,1,f_fp&#41;;
   if &#40; !feof&#40;f_fp&#41; &#41;
   printf&#40;&#34;Zahl&#58;%i&#092;n&#34;,zahl&#41;;
  }
  fclose&#40;f_fp&#41;;
 }
 getch&#40;&#41;;
}

void auslesung&#40;FILE* f_fp&#41;
{     clrscr&#40;&#41;;
 f_fp = fopen&#40;&#34;bla.dat&#34;,&#34;rb&#34;&#41;;
 int zahl,i=0;
 if &#40; f_fp == NULL &#41; { printf&#40;&#34;fehler&#092;n&#34;&#41;; }
 else
 {
  while &#40; !feof&#40;f_fp&#41; &#41;
  {
   fread&#40;&zahl,4,1,f_fp&#41;;
   if &#40; !feof&#40;f_fp&#41; &#41;
   printf&#40;&#34;Zahl&#58;%i&#092;n&#34;,zahl&#41;;
  }
  fclose&#40;f_fp&#41;;
 }
 getch&#40;&#41;;
}

void dateierzeugehn&#40;FILE* f_fp&#41;
{
 clrscr&#40;&#41;;
 f_fp = fopen&#40;&#34;bla.dat&#34;,&#34;a+b&#34;&#41;;
 int zahl,i=0;
 if &#40; f_fp == NULL &#41; { printf&#40;&#34;fehler&#092;n&#34;&#41;; }
 else
 {
  unsigned char v;
  do
  {  i++ &#59;
   scanf&#40;&#34;%i&#34;,&zahl&#41;;
   fwrite&#40;&zahl,4,1,f_fp&#41;;

   printf&#40;&#34;beliebige Taste ausser 'n' eingeben um eine neue zahl einzugeben&#092;n&#34;&#41;;
   v=getch&#40;&#41;;
  }
  while&#40;&#40;v!='n'&#41;&&&#40;v!='N'&#41;&#41;;
 }
 printf&#40;&#34;g z%i&#092;n&#34;,i&#41;;
 fclose&#40;f_fp&#41;;
}
//---------------------------------------------------------------------------
01/05/2007 02:48 Behemoth-RO#8
thx nun hab ich alles hinbekommen ^^
zwar nicht mit x]vIrus[x seiner hilfe (kein plan was der code bedeutet XD fang erst an qq')