J'ai écrit ce code. Dans ce programme, je lis un fichier puis verse une partie du fichier dans le char * temp. Enfin char * temp écrit dans le fichier. J'ai un problème. Quand j'écris temp dans le fichier seulement 4 caractères écrits dedans. Que dois-je faire?pourquoi écrire la fonction ne fonctionne pas correctement?
fstream file;
file.open("mary.txt",ios::in);
file.seekg(-1,ios::end);
int pos=file.tellg();
char ch;
char c;
int i=0;
char * temp=new char[100];
file.seekg(0,ios::beg);
while(pos >=0)
{
file.read(&ch,sizeof(char));
if(ch=='a'||ch=='o'||ch=='u'||ch=='e'||ch=='i'||ch=='A'||ch=='O'||ch=='U'||ch=='E'||ch=='I')
{
pos--;
continue;
}
else if(ch>='a' && ch<='z')
{
c=ch-32;
temp[i]=c;
i++;
}
else
{
temp[i]=ch;
i++;
}
pos--;
}
temp[i]=NULL;
cout<<temp<<endl;
cout<<" sizeof temp:"<<sizeof(temp)<<endl;//out put is 4 while temp has longer size!! why?
fstream f("test.txt",ios::trunc);
f.write(temp,sizeof(temp));//if the file contains "abcdeifjle" only written "abcd"
Utilisez 'strlen (temp)', pas 'sizeof (temp)' –
'sizeof (temp)' vous donne la taille de la variable de pointeur, qui en fait semble être 4 octets pour votre environnement actuel (32 bits). –
Utilisez strlen au lieu de sizeof et n'oubliez pas d'appeler les méthodes flush et close à la fin. –