Zum Inhalt springen

float to string!?


Gottesgeschenk

Empfohlene Beiträge

hallo zusammen

wieder mal ich und wiedermal ein problem. ich soll aus einer datei 3 werte auslesen, die in der datei "test.txt" stehen:

18926 10559 78,25

die Zahlen sind durch 'tab' getrennt.

das programm "verschluckt" aber das "," und den centbetrag! jetzt zu meinem richtigen problem

im unten stehenden programm forme ich die int-zahl in einen string um. das soll auch so bleiben, also benötige ich eine funktion, die mir den float-wert in einen char-wert konvertiert - natürlich mit der kommastelle! ist das überhaupt möglich und wenn ja wie?

danke im voraus für eure mühe!

////////////////////////////////////////////////////

#include <stdio.h> //die vielen header dateien brauchen euch nicht zu stören

#include "iostream" //dieser teil ist aus einem grösseren programm!

#include <conio.h>

#include <windows.h>

#include <stdlib.h>

void main ()

{

FILE *einlesen;

int i,Zahl[1152];

char testnr[6];

char szNummer1[6];

char testpreis[6];

int count=0, counter=0;

einlesen = fopen ("e:\\test\\test.txt","r");

if ((einlesen = fopen ("e:\\test\\test.txt","r")) == NULL)

{

printf("ERROR");

}

else

{

do {

fscanf(einlesen,"%i",&Zahl[counter]);

counter++;

}while(Zahl[counter] != '\0');

_gcvt( Zahl[count], 6, testnr);

count++;

_gcvt( Zahl[count], 5, szNummer1);

count++;

_gcvt( (double)Zahl[count], 5, testpreis);

count++;

getch();

printf("%s",testnr);

printf("\t");

printf("%s",szNummer1);

testpreis[strlen(testpreis)-1]=0;

printf("\t");

printf("%s",testpreis);

//printf("%i",count);

printf("\n");

}

fclose(einlesen);

getch();

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

warum ließt du die Werte nicht direkt als String ein?

ansonsten kannst du auch sprintf oder _snprintf nehmen, obwohl ich mal irgendwo

gelesen habe das man keine Funktionen benutzen sollte die mit einem _

beginnen, weil die nicht zum standart gehören würden. Ich weiß aber

nicht ob da was dran ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Guybrush Threepwood

[...] _snprintf nehmen, obwohl ich mal irgendwo

gelesen habe das man keine Funktionen benutzen sollte die mit einem _

beginnen, weil die nicht zum standart gehören würden. [...]

*k l u g s c h e i s s* seit C99 gehört snprintf zum Standard.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verstehe das Problem nicht.

Mal abgesehen davon das %i nie eine fließkomma zahl bearbeitet und immer die nachkommestellen fehlen dürften...

Wieso liest Du die Zahlen ein und wandelst sie wieder als String ?

Der Umgekehrte Weg wäre einfacher. Erst als Text einlesen , dann das komma ersetzen und wenn nötig (wenn Du das überhaupt brauchst) in eine Zahl wandeln.

Das könnte in C++ beispielsweise so aussehen:


#include "stdafx.h"

// Zum speichern der Werte in einem Vector
#include <vector>
// Zum einlesen aus Datei
#include <fstream>
// Naja , strings
#include <string>
// Für ptr_fun
#include <functional>
// für for_each und copy
#include <algorithm>

// Für die Ausgabe
#include <iostream>
#include <iterator>

using namespace std;

// Sucht das erste , und ersetzt es durch ein .
void replacepoint(std::string & rep)
{
std::string::size_type pos;
pos = rep.find(",");
if(pos == std::string::npos)
return;
rep.replace(pos,1,".");
}

int main(int argc, char * argv[])
{
ifstream datei("e:\\test\\test.txt");
if(!datei)
return 20;

vector<string> platzhalter;
string help;

datei>>help; // 1. einlese versuch
if(datei.fail()) // Prüfen ob ok
return 20;
do
{
platzhalter.push_back(help); // Speichern
datei>>help; // Nächsten lesen
}while(!datei.eof()); // Alles ok ? Wenn ja loop


// Jeden der eingelesenen Zeichenketten nach , durchsuchen und durch . ersetzten
for_each(platzhalter.begin(),platzhalter.end(),std::ptr_fun(replacepoint));

// Ergebnis auf dem Bildschirm ausgeben
copy(platzhalter.begin(),platzhalter.end(),ostream_iterator<string>(cout,"\n"));


return 0;
}

[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

schon mal danke für eure antworten

@knuddlbaer - ich soll das ganze in c programmieren. danke für die hilfe aber ich kann damit nix anfangen...

so hier jetzt das beispiel programm:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

void main( void )

{

FILE *stream;

char buffer[10000];

int i, ch;

if( (stream = fopen( "e:\\test\\test.txt", "r" )) == NULL )

exit( 0 );

ch = fgetc( stream );

for( i=0; (i < 10000) && ( feof( stream ) == 0 ); i++ )

{

buffer = (char)ch;

ch = fgetc( stream );

}

buffer = '\0';

printf( "%s\n", &buffer[0]);

fclose( stream );

}

das programm läuft soweit auch gut, jedoch habe ich das problem, dass ich die ausgabe nicht zerlegen kann! es liest mir die komplette datei korrekt aus, allerdings muss ich die datei zerlegen in die folgenden werte:

der erste wert, also die 5- bzw. 6stellige zahl sollte als "testnr" abzuspeichern sein. die 2. zahl als "szNummer1" und die letzte als "testpr".

testnr // szNummer1//testpr

18926***10559***78,25

35116***10855***102

127694***11680***197

127703***11685***49

127708***11689***15

60935***11781***198

34593***11800***138

100182***11811***25,30

(da das board die tabulatorsprünge nicht anzeigt, habe ich sie ersetzt durch ***)

ich möchte die ausgabe aber komplett zerlegen! wie kann ich das machen?

ich steh auf dem schlauch...:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...