Jo det fungerade när jag lade till string.h tack! Jag fortsatte programera vidare och upptäckte att det inte gick att skriva if(filnamn="0").. Försökte lösa det men lyckades inte.. Är nog inte så bra på problemlösning...
#include <iostream.h>
#include <fstream>
#include <stdlib.h>
#include <string>
void makefile(const char* x){
ofstream Ut(x);
Ut << "<html>"<<endl<<"<head>" << endl;
Ut << "<title></title>" << endl;
Ut << "<body bgcolor=#ffffff>"<< endl;
Ut << ""<< endl;
Ut << "</body>"<< endl;
Ut << "</html>";
}
int main (){
char filnamn[40];
while(true){
cout<<"Ange ett filnamn"<<endl;
cin>>filnamn;
if(filnamn="0") {
break;
}
strcat(filnamn,".html");
makefile(filnamn);
}
}
#include <iostream.h>
#include <fstream>
#include <stdlib.h>
#include <string>
void makefile(const char* x){
ofstream Ut(x);
Ut << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">";
Ut << "<html>"<<endl;
Ut << "<head>"<<endl;
Ut << "<title></title>"<<endl;
Ut << "</head>"<<endl<<endl;;
Ut << "<body bgcolor=\"#ffffff\">"<<endl;
Ut << ""<< endl;
Ut << "</body>"<< endl;
Ut << "</html>";
}
int main (){
char filnamn[40];
while(true){
cout<<"Ange ett filnamn"<<endl;
cin>>filnamn;
if(filnamn=="0"){
break;
}
strcat(filnamn,".html");
makefile(&filnamn);
}
}
.. och min kompilator skriker lite om "passing `char (*)[40]' as argument 1 of `makefile(const char *)'" alltså makefile(&filnamn");..
Kommer inte ihåg hur man ska göra vid "const". Men tills PeW kommer tillbaka så kan du ta bort "const" så borde det fungera. Sen får PeW (eller någon annan) förklara bättre :)
makefile(&filnamn);
är fel. Det ska vara makefile(filnamn); eftersom filnamn redan är en pekare. Du kan göra om variabler till konstanter (som du gör i detta fall), men du kan inte göra om konstanter till variabler.
if(filnamn=="0"){
Du kan inte använda operatörer (som t.ex. ==) på strängar i C, därför finns det funktioner för det. För att jämföra två strängar använder du funktionen strcmp. strcmp returnerar noll om strängarna är exakt lika. Din kod blir då:
if(strcmp(filnamn, "0") == 0)
makefile( (const char *)filnamn);
fungerar, men är helt onödigt, eftersom C automatiskt gör om variabler till konstanter.
nu när vi ändå är inne på lite filhantering och sånt...
kan nån hjälpa mig med ett par funktioner, jag är inte så himla haj på dethär med filer ännu....
En funktion som kollar ifall ett filnamn existerar är läsbar, en funktion som kollar ifall en fil går att skriva till (utan att funktionen ger sig till att skriva till filen)...
Det jag ville göra var ett program som man lätt kunde namnge sina sidor och ge dem en grundstruktur. Det har jag nu lyckats med, mycket tack vare er. Jag postar i varje fall resultatet här. Så kan ni fritt modifiera det. Men posta gärna resultaten i denna tråd.
#include <iostream.h>
#include <fstream>
#include <stdlib.h>
#include <string>
void makefile(const char* x,const char* projektnamn,const char* bakgrundsfarg){
ofstream Ut(x);
Ut<<"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">";
Ut<<"<html>"<<endl;
Ut<<"<head>"<<endl;
Ut<<"<title>"<<projektnamn<<"</title>"<<endl;
Ut<<"</head>"<<endl<<endl;
Ut<<"<body bgcolor=\"#"<<bakgrundsfarg<<"\">"<<endl<<endl;
Ut<<"</body>"<<endl;
Ut<<"</html>";
}
int main (){
char filnamn[40];
char projektnamn[100];
char bakgrundsfarg[10];
cout<<"\tAnge ett namn f\x94r projektet\n\t";
cin.getline(projektnamn, 100);
cout<<"\tAnge bakgrundsf\x84rg [hexadecimalt]\n\t";
cin.getline(bakgrundsfarg, 6);
cout<<"\n\tAnge ett filnamn och tryck retur. L\x84sningen avbryts n\x84r du anger 0\n"<<endl;
while(true){
cout<<"\t";
cin.getline(filnamn,40);
if(strcmp(filnamn,"0") == 0){
break;
}
strcat(filnamn,".html");
makefile((const char *)filnamn,projektnamn,bakgrundsfarg);
}
}
147 ms totalt · 3 externa anrop · v20260731065814-full.55e59744