Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 22:41

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C scanf eingaben in einer txt speichern?

Discussion on C scanf eingaben in einer txt speichern? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
.ChillOut's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 897
Received Thanks: 108
C scanf eingaben in einer txt speichern?

Hey, ich habe eine Frage.
Kann man mit C scanf eingaben in einer txt speichern?
Wenn ja wie?
.ChillOut is offline  
Old 05/16/2012, 17:07   #2
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
*** das geht:
xNopex is offline  
Old 05/25/2012, 15:41   #3
 
elite*gold: 0
Join Date: Apr 2009
Posts: 103
Received Thanks: 53
poXavincS is offline  
Old 06/03/2012, 20:12   #4
 
Slorkr4yn's Avatar
 
elite*gold: 0
Join Date: Jul 2011
Posts: 137
Received Thanks: 18
Quote:
Originally Posted by 5anku View Post
Code:
// String mit 30 Zeichen
char Array[30];

// Pointer auf File
FILE *TxtFile;
TxtFile= fopen("C:\\TxtFile.txt","w+");
// Zu dem w+ weiter unten die Erklärung

// String einlesen
fgets(Array, 30, stdin);

// Es würde auch so gehen:
printf("Bitte gebe deinen Text ein:");
scanf("%s", &Array);
// Nachteil gegenüber fgets, es überprüft nicht ob du über
// das Array hinaus gehst. Ausserdem setzt fgets an das Ende
// einen \n

// 1. File, 2. Datentyp(oder auch gleich den String), 3. Variable
fprintf(TxtFile, "%s", Array);
// Jetzt wird es im File gespeichert

// Überprüfung ob das File überhaupt vorhanden ist
if(TxtFile == NULL)
{
   //... Datei nicht vorhanden
}

//  Datenströme wieder schliessen.
fclose(TxtFile );
r - Datei nur zum Lesen öffnen (READ)
w - Datei nur zum Schreiben öffnen (WRITE), löscht den Inhalt der Datei, wenn sie bereits existiert
a - Daten an das Ende der Datei anhängen (APPEND), die Datei wird nötigenfalls angelegt
r+ - Datei zum Lesen und Schreiben öffnen, die Datei muss bereits existieren
w+ - Datei zum Lesen und Schreiben öffnen, die Datei wird nötigenfalls angelegt
a+ - Datei zum Lesen und Schreiben öffnen, um Daten an das Ende der Datei anzuhängen, die Datei wird nötigenfalls angelegt
Da sind 2 Sachen falsch ( also was mir aufgefallen is )

1. Eine Zeichenkette also %s braucht kein & beim scanf
2. Bei fgets wird ein \0 hinten angefügt, weil sonst die Kette unendlich weitergeht und Speicher braucht bis zum abwinken.

Nicht dass ich das hier falsch stehen lasse ^^
Slorkr4yn is offline  
Old 06/04/2012, 17:42   #5


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Zum scanf, es ist egal ob man das & macht oder weglässt. Der Compiler beschwert sich bei keiner der beiden. Aber du hast Recht da ein Array in C ein Pointer ist könnte man das & weglassen.
Nein, da es eben kein Pointer ist, geht das ganze gut. Wäre es einer, würdest du die Adresse des Pointers übergeben und nicht der Zeichenkette und damit in den Pointer schreiben lassen.
Du kannst nur Arrays an Stelle eines Pointers übergeben, dennoch bleiben sie etwas unterschiedliches.

Quote:
2. Bei fgets wird ein \0 hinten angefügt, weil sonst die Kette unendlich weitergeht und Speicher braucht bis zum abwinken.
Nein, dafür ist der 2. Parameter da.
Außerdem würde sie nicht mehr Speicher brauchen, selbst wenn du Recht hättest, da kein Speicher automatisch alloziert wird, d.h. du würdest irgendwann in einer Access Violation landen.
Lieber erst Sprache lernen und dann klugscheißen.
MrSm!th is offline  
Thanks
2 Users
Old 06/04/2012, 20:15   #6
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by 5anku View Post
Durch die Anweisung

Code:
 
ptr = element;
wird dem Zeiger ptr die Adresse des Arrays element übergeben. Dies funktioniert ohne den Adressoperator, da laut ANSI C-Standard der Arrayname immer als Zeiger auf das erste Array-Element angesehen wird. Hier der Beweis und das Beispiel dazu:

Code:
#include <stdio.h>

int main()
{
   int element[8] = {1,2,4,8,16,32,64,128};
   int i;

   printf("*element     = %d\n",*element);
   printf("*(element+1) = %d\n",*(element+1));
   printf("*(element+3) = %d\n",*(element+3));

   printf("\nJetzt alle zusammen : \n");
   for(i=0; i<8; i++)
      printf("*(element+%d) = %d \n",i,*(element+i));
   return 0;
}
Leider sind es aber exakt solche Programmbeispiele, durch die der Eindruck entsteht, Arrays und Zeiger seien gleichwertig. Und das habe ich nie behauptet.

"quod erat demonstrandum"

uns ist durchaus klar wie zeiger und arrays funktionieren, deine aussage:
Quote:
Zum scanf, es ist egal ob man das & macht oder weglässt.
lässt aber den eindruck entstehen, es sei generell egal, ob man das & zeichen benutzt oder nicht.
dem ist aber nicht so, das mag bei dem array gutgehen, wenn es sich aber um einen (normalen) pointer handelt geht das schön schief, weswegen man es imo beim array weglassen sollte.

wenn das array nachher einem dynamischen mit new allokiertem array weicht braucht man im code keine änderungen mehr vorzunehmen.
Dr. Coxxy is offline  
Old 06/04/2012, 20:19   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Zum scanf, es ist egal ob man das & macht oder weglässt. Der Compiler beschwert sich bei keiner der beiden. Aber du hast Recht da ein Array in ANSI-C ein Pointer ist könnte man das & weglassen.
Hast du wohl.

Und ich habe doch schon geschrieben, dass es halt nur mit nem Array funktioniert, weil der Compiler es automatisch so übersetzt, dass eigentlich dessen Adresse übergeben wird; array und &array machen keinen Unterschied.
ptr und &ptr allerdings schon, da du in zweitem Fall die Adresse des Pointers übergibst, was nicht im Sinne des Programms ist.

Obwohl Arrays sich ähnlich nutzen lassen, sind sie also dennoch nicht das gleiche, ergo ist deine erste Aussage falsch und deine zweite unnötig.

Ich kann auch Latein
MrSm!th is offline  
Reply


Similar Threads Similar Threads
[Vb.NET] Text einer Website auslesen und in Label speichern ?
05/02/2012 - .NET Languages - 23 Replies
Hallo. Ich bin gerade dabei ein Tool zu entwickeln. Mit diesem Tool möchte ich einen Inhalt von einer Website auslesen und in ein Label speichern. Konnte dazu auf google nichts finden. :/ Auf der Website sieht man 1x den Namen einer Datei zb Kuchen.jpg (ist immer anders!) und einmal " 50,88kB" (auch immer anders) Nun möchtei ch die beiden Werte ( 50,88kB und Kuchen.jpg ) in zwei verschiedenen Labels speichern. Momentan habe ich das was aber ganz und garnicht hinhaut :<
Hilfe in Cinema 4d ? Datei Speichern mit transparentem hintergrund Speichern ?
09/29/2011 - elite*gold Trading - 10 Replies
^this. Melde euch bei mir, wenn es klappt, bekommt ihr bisschen egold.
Alle Videos einer Youtube-Playlist in je einer .mp3 speichern?
02/24/2011 - Technical Support - 7 Replies
huhu ich möchte von einer Playlist (keine Warez!) die Sounds downloaden. Wie mache ich das am elgantesten? Mein JDownloader zeigt leider keine Links an wenn ich die Playlist in den Linksammler eintrage. MfG



All times are GMT +2. The time now is 22:41.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.