Hej ja frågan tyder som rubriken jag lyckas inte riktigt få ihop det jag har följande kod: >vad kan detta bero på? jag ahr försökt lägga till ett \0 men det har inte blivit bättre det är just det som jag har testat Då är det nog inte det som är felet. Det skulle underlätta om du postade koden som skriver till filen också. testa att ändra till här är koden som skriver till filen >för jag vet inte hur man gör när man retunerar en char från en funktion, hur gör man det förresten? Att returnera en char gör man med att skriva ta varje bokstav tills enter trycks ner och lagra allt i en char?
i=-1;
cout << "Please enter a password (MAX 100 characters): ";
do
{
i++;
pass[i]=getch();
gotoxy(48+i,2);
cout << "*";
tecken=pass[i];
}while(tecken!=13);
jag har testat lite olika varianter på koden men med samma resultat. Det verkar som att alla bokstäver utom just enter kommer med eller det kanske den gör men det blir alltid ett fyrkantigt tecken i filen man skriver till efter själva texten man skrivit in innan man tryckt enter.
vad kan detta bero på? jag ahr försökt lägga till ett \0 men det har inte blivit bättre
tack på förhand
mvh
tedSv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
Det beror på att det sista tecknet som läggs in i strängen är enter. Du måste ha lagt '\0' på fel ställe, förmodligen efter enter.
Skriv detta efter loopen så får du bort enter tecknet:
pass[i]='\0';
/PeterSv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
men det hjälper inteSv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
/PeterSv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
while(tecken!=10);Sv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
ofstream passwordoutfile ("password");
passwordoutfile << reciveddata.c_str();
passwordoutfile.close();
anledningen till .c_str() efter reciveddata beror på att jag skickar från en client till en server och att jag returnerar en string från en funktion för jag vet inte hur man gör när man retunerar en char från en funktion, hur gör man det förresten?Sv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
Det är bara att returnera adressen till det första tecknet i strängen.
T.ex:
<code>
char* funktion()
{
char[] szBuf="qwerty";
return (char*)szBuf;
}
</code>
/PeterSv: ta varje bokstav tills enter trycks ner och lagra allt i en char?
char funktion(...)
{
return 'a';
}
Vill man däremot returnera en teckensträng bör man INTE returnera en char* (dvs. en c-sträng), utan istället just en std::string. Dessutom behöver man allra oftast inte c_str, utan din kod är helt perfekt, med ett undantag. Så här bör den se ut:
ofstream passwordoutfile ("password");
passwordoutfile << reciveddata;
passwordoutfile.close();