在C中读取未知格式的行
我需要用C语言编写一个程序来读取文本,并用另一个字母替换一个字母。我是一名编程新手,到目前为止,我一直使用在C中读取未知格式的行,c,string,file,scanf,C,String,File,Scanf,我需要用C语言编写一个程序来读取文本,并用另一个字母替换一个字母。我是一名编程新手,到目前为止,我一直使用fscanf函数。 我如何在不知道格式的情况下阅读一行文本 我甚至不知道文件的长度 这是我的“file.txt”: 我需要将每个“m”改为“n”,然后打印出结果。感谢您的帮助请确定最大缓冲区长度,并使用以下内容阅读: 只需确定一个最大缓冲区长度,并使用以下选项读取: #包括 枚举{OLDCH='m',NEWCH='n'}; int main() { INTC; 而((c=getchar())
fscanf
函数。
我如何在不知道格式的情况下阅读一行文本
我甚至不知道文件的长度
这是我的“file.txt”:
我需要将每个“m”改为“n”,然后打印出结果。感谢您的帮助请确定最大缓冲区长度,并使用以下内容阅读:
只需确定一个最大缓冲区长度,并使用以下选项读取:
#包括
枚举{OLDCH='m',NEWCH='n'};
int main()
{
INTC;
而((c=getchar())!=EOF){
if(c==OLDCH)
c=纽奇;
普查尔(c);
}
返回0;
}
#包括
枚举{OLDCH='m',NEWCH='n'};
int main()
{
INTC;
而((c=getchar())!=EOF){
if(c==OLDCH)
c=纽奇;
普查尔(c);
}
返回0;
}
#包括
char*repchar(char*str,char-from,char-to){
如果(str!=NULL){
char*p;
对于(p=str;*p;++p){
如果(*p==from)
*p=至;
}
}
返回str;
}
int main(){
字符行[256];
文件*fp;
fp=fopen(“file.txt”,“r”);
//scanf将一行输入char[]
//%[^\n]订单将非'\n'作为输入
//%*[\n]忽略输入'\n'
而(fscanf(fp,“%[^\n]%*[\n]”,第行)==1){
printf(“%s\n”,repchar(行'm','n');
}
fclose(fp);
}
#包括
char*repchar(char*str,char-from,char-to){
如果(str!=NULL){
char*p;
对于(p=str;*p;++p){
如果(*p==from)
*p=至;
}
}
返回str;
}
int main(){
字符行[256];
文件*fp;
fp=fopen(“file.txt”,“r”);
//scanf将一行输入char[]
//%[^\n]订单将非'\n'作为输入
//%*[\n]忽略输入'\n'
而(fscanf(fp,“%[^\n]%*[\n]”,第行)==1){
printf(“%s\n”,repchar(行'm','n');
}
fclose(fp);
}
您应该为您的问题提供一些示例输入和输出,您想做什么还不是很清楚。如果我理解正确,您可以阅读文本,找到您要查找的字符的匹配项,然后用另一个字符替换它。如果您确实想替换单个字母,那么您可以简单地使用fgetc
和fputc
。“fgetc”和“fputc”中的“f”表示“函数”。。。与宏getc和putc相反。fgetc和fputc只能在您需要函数指针时使用。您应该为您的问题提供一些示例输入和输出,您想做什么还不是很清楚。如果我理解正确,您可以阅读文本,找到您要查找的字符的匹配项,然后用另一个字符替换它。如果您确实想替换单个字母,那么您可以简单地使用fgetc
和fputc
。“fgetc”和“fputc”中的“f”表示“函数”。。。与宏getc和putc相反。fgetc和fputc只能在您需要函数指针时使用。如果我不知道文件的长度?请阅读我的答案中链接的fgets
文档至少:从流中读取字符并将它们作为C字符串存储到str中,直到(num-1)已读取字符或到达换行符或文件结尾,以先到者为准。如果我不知道文件的长度?请阅读fgets
的文档,该文档至少在我的回答中链接:从流中读取字符并将其作为C字符串存储到str中,直到(num-1)字符已被读取,或者换行符或文件结尾已到达,以先到者为准。我有一个文件上的文本。。。我不能使用getchar:/当然可以:myfilterpgmNel 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.
FILE *file = fopen(...);
char buffer[256];
fgets(line,256,file);
#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;
}
#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);
}