我需要在C中编写一个读取文本的程序,并用另一个字母替换一个字母。我是编程新手,到目前为止我总是使用fscanf
函数。
如何在不知道格式的情况下阅读一行文字?
我甚至不知道文件的长度......
有我的“file.txt”:
Nel mezzo del cammin di nostra vita
mi ritrovai per una selva oscura,
ché la diritta via era smarrita.
Ahi quanto a dir qual era è cosa dura
esta selva selvaggia e aspra e forte
che nel pensier rinova la paura!
Tant' è amara che poco è più morte;
ma per trattar del ben ch'i' vi trovai,
dirò de l'altre cose ch'i' v'ho scorte.
Io non so ben ridir com' i' v'intrai,
tant' era pien di sonno a quel punto
che la verace via abbandonai.
我需要用“n”改变每个“m”而不是打印出结果。谢谢你的帮助
答案 0 :(得分:3)
只需确定最大缓冲区长度并使用fgets
读取它:
FILE *file = fopen(...);
char buffer[256];
fgets(line,256,file);
答案 1 :(得分:0)
#include <stdio.h>
enum { OLDCH = 'm', NEWCH = 'n' };
int main()
{
int c;
while ( (c = getchar()) != EOF ) {
if( c == OLDCH )
c = NEWCH;
putchar(c);
}
return 0;
}
答案 2 :(得分:0)
#include <stdio.h>
char* repchar(char *str, char from, char to){
if(str != NULL){
char *p;
for(p=str;*p;++p){
if(*p == from)
*p = to;
}
}
return str;
}
int main(){
char line[256];
FILE *fp;
fp=fopen("file.txt","r");
//input of one line to char[] by scanf
//%[^\n] order takes as input a non '\n'
//%*[\n] ignore input '\n'
while(fscanf(fp, "%[^\n]%*[\n]", line)==1){
printf("%s\n", repchar(line, 'm', 'n'));
}
fclose(fp);
}