Edit line in text document
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Is there a way to change one line in a text document? My impression is that with fopen and fprintf there is no way to just edit the contents a line, leaving the rest of the doc unchanged. I tried the following:
fid = fopen(doc,'r+);
while true
str = fgetl(fid);
if feof(fid) % break out of loop and end of doc
break
end
if strcmp(str,checkstr)
newstr = [str 'abc'];
fprintf(fid,'%s',newstr);
end
end
fclose(fid);
But I cannot get this to work (if I run the code, the document is not changed). I tried to play with additional tags like \r or \n, but I couldn't get it to work. Is there something I am missing, or is it generally not possible (with reasonable effort) to just edit a text file, in which case I guess I will have to create a copy of the full file?
0 commentaires
Réponse acceptée
Cedric
le 10 Avr 2013
If you want to change part of a line based on a match (checkstr), a good way to achieve this is to use regular expressions, e.g.
buffer = fileread('inFile.txt') ;
buffer = regexprep(buffer, 'I hate regexp', 'I love regexp') ;
fid = fopen('outFile.txt', 'w') ;
fwrite(fid, buffer) ;
fclose(fid) ;
If you tell me the pattern that you are matching and the replacement, I can help you building a pattern for the regexp if it is more elaborate that basic alpha-numeric characters.
Plus de réponses (1)
PT
le 10 Avr 2013
Two issues:
1. As the help of fopen states, you must have a fseek between fgetl and fprintf.
2. You are changing the overall file size by inserting. It might be better if you save to a temp file and replace the original file with the temp file at the end of your operation.
%{
File content:
good
morning
to you
%}
checkstr = 'morning';
fin = fopen('test.txt','r');
fout = fopen('testout.txt','w');
while ~feof(fin);
str = fgetl(fin);
if strcmp(str,checkstr)
str = [str 'abc'];
end
fprintf(fout, '%s\n', str);
end
fclose(fin);
fclose(fout);
0 commentaires
Voir également
Catégories
En savoir plus sur Environment and Settings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!