用c语言字符串文件读写问题

作者&投稿:丛泥 (若有异议请与网页底部的电邮联系)
c语言关于文件字符串读写为什么会出错~

代码我没看,可能是指针的问题 ,我犯过这样的错。也有可能是内存泄露!

可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc();先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符。读取全部文本中全部字符可以使用一个while循环加判断是否读取到文件结尾来实现:char ch;while((ch= fgetc(fp)) != EOF)这样当读取到文件结尾时,while循环就会终止。
C语文编写编译如下:
#include #include #include #define MAXLINE 100000#define BUFLEN 1024int main(){FILE *file;char buf[BUFLEN];int len=0,i=0;char *array[MAXLINE];file=fopen("test.txt","r");//打开TXST.TxT文件if(!file)return -1;while(fgets(buf,BUFLEN,file))//读取TXT中字符{ len=strlen(buf); array[i]=(char*)malloc(len+1); if(!array[i])break; strcpy(array[i++],buf);}fclose(file);i--;while(i>=0&&array[i]){ printf("%s
",array[i]);//打印test文档的字符 free(array[i--]);}}

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(int argc,char *argv[])
{
   FILE *fp=NULL;
   char content[1024]={0},ch;
   char *p=NULL;
   int i=0;
   if(argc!=3)
   {
      printf("Arguments number wrong!
");
  exit(0);
   }
   if((fp=fopen(argv[1],"r"))==NULL)
   {
      printf("File open failed!
");
      exit(0);
   }
   while((ch=fgetc(fp))!=EOF)
   {
     content[i++]=ch;
   }
   if((p=strstr(content,argv[2]))==NULL)
   {
     printf("-1
");
     fclose(fp);
   }
   else
   {
      printf("Position:%d
",p-content);
      fclose(fp);
   }
   
}

Well处于第119个字符的开始处



 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h> /*导入exit*/

 long filesize (FILE *pfile);
 int match_string(const char *str1, char *str2, FILE *pfile);
 char strbuf[1024]; 

 int main (int argc, char**argv) 
 {
//check 
if (argc < 3) 
    {  puts ("用法: find 源文件 目标串
"); 
        return 1;
            }
FILE *pin = fopen(argv[1],"r"); 
 if  (pin==NULL ) 
    {  printf("%s 不存在或打开失败.
",argv[1]);
        return 2;
            }
long fileSZ = filesize(pin); 
 if  (fileSZ<1) 
    {  printf("%s 为空!
",argv[1]); 
        return 3;
            }

//do
fseek(pin, 0, SEEK_SET); 
long pos_from=ftell(pin); int matchings=0/*匹配数*/; 
long pos_end=pos_from+fileSZ-1; /*文件尾字符位置*/
long tgtlen=(long)strlen(argv[2]); 

        /*迭代匹配文件中子串..到文件尾结束*/  
for ( ; pos_from+tgtlen-1<=pos_end; pos_from++) 
    {  fseek(pin,pos_from,SEEK_SET); 
       if  
       (match_string(argv[2],strbuf,pin))
       {  printf("%d ",pos_from); matchings++; 
       }
}
 puts(""); 

if ( !matchings) puts("-1"); 
printf("匹配数:%d
",matchings); 

 }

 long filesize (FILE *pfile) /*文件长度*/
 {
fseek(pfile,0,SEEK_SET); long pos_beg=ftell(pfile);
fseek(pfile,0,SEEK_END); long pos_end=ftell(pfile);
 return pos_end-pos_beg; 
 }
 
 int match_string(const char *A, char *B, FILE *pfile) 
/*匹配串A在文件中,——从流当前位置开始;——设文件中等长串
           为B,若B等于A,则匹配成功*/  
 {
//取得B
int len =strlen(A); if (len==0) return 0; 
int ret=fread(B, 1,len,pfile); 
 if  (ret<len||len<ret) return 0; 

//进行比较
return memcmp(A,B,len)==0 ; 
 }

   

   虽然晚了,但已写出了。。就也发布吧~
   我这个是全功能版的,——查找所有匹配子串+适用任意文件。。

        enjoy.




C语言\/\/从另一文件中读取数字 和 字符串,并进行统计。
\/\/fopen函数是第一个变元是文件路径 第二个是模式 char *parr[WORDS_LEN];\/\/记录每个单词的内存地址 int words_count[WORDS_LEN];\/\/生命记录单词的字符数组 char temp_char=0;\/\/用于记录fgetc从文件得到的字符 int word_index=0;\/\/记录单词的字符索引 int words_index=0;\/\/用于记录...

用C语言编写读入并读取一个文件,按照下面的要求编写程序
puts("file1文件打开失败!");exit(0);} else puts("file1文件打开成功");\/*___*\/ scanf("%[^!]",str1);\/\/输入一串字符,以!为结束标志;fprintf(fp,"%s",str1);\/\/将字符串str1写入指针fp所指向的文件;fscanf(ok,"%s",str2);\/\/读取指针ok指向的文件,将内容以字符串的形式存储在...

c语言编程 从文件中读入多行字符串,并在另一文件中输出最长的一行,若...
100],t[100]; gets(filename);\/\/读文件名 注意路径如f:\\1.txt if((fp=fopen(filename,"r"))==NULL) {printf("Can not open file.\\n");exit(0);} fgets(s,100,fp);\/\/读字符串 while(!feof(fp)) { fgets(t,100,fp); if(strlen(t)>strlen(s)) strcpy(s,t);...

如何将文件读出,并存在字符串中?帮忙看看我的代码有什么问题?修改时尽 ...
gets(srcfname);\/\/输入文件 srcfile=fopen(srcfname,"rb");if(srcfile==NULL)return 1;memset(res,'\\0',10000);\/\/置每个元素为0 while((ch=getc(srcfile))!=EOF){ printf("%d\\n",ch);res[i]=ch;i++;} fclose(srcfile);\/\/关闭文件 i=0;while(res[i])printf("%c",res[...

C语言读取文件内容时怎样读取带空格的字符串
用fgets就可以了原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL char t[100];fp=fopen("file","r");fgets(t,81,fp); \/\/从fp文件中读入80个字符,如果遇到回车或不足80个,就结束读取...

C语言中 如何读取 以逗号分割的文件中 的数据(包括字符串)?
每次用fgets读取整行,然后扫描一遍,看看逗号数量是不是足够一个完整结构体了。如果不够,继续fgets,注意要读取到上一次fgets内容的末尾。然后再度检查逗号数量。如果逗号数量够了(也就是内容已经足够一个结构体了),先去掉换行符。然后每次先用strchr找到下一个逗号,再用strncpy将当前位置到下一个逗号...

C语言文件怎样读取双引号中的字符串
"不能打开文件!"); rturn 0; } fscanf(fp1,"\\"%s\\"",c);\/\/从输入文件读取一个双引号中的字符串 fprintf(fp2,"%s",c);\/\/向输出文件写入这个字符串 fclose(fp1);\/\/关闭输入文件 fclose(fp2);\/\/关闭输出文件,相当于保存 return 0;} ...

c语言 文件读取 字符 到一个字符数组
int fgetc(FILE *fp);功能为从打开的文件fp中读取一个字符,并返回。当读取成功时,返回读取到的字符的ascii码值,否则返回EOF。以下是逐个读取字符,存于字符数组,直到读完整个文件的例子。include <stdio.h>int main(){ char buf[10240];\/\/定义一个足够大的字符数组存文件数据。 int c;\/...

C语言:从键盘输入20个字符串,保存在C盘指定文件filel.dat,然后从文件中...
for (i=0;i<len;i++)for (j=i+1;j<len;j++)if (name[i]>name[j]){ t=name[i];name[i] =name[j];name[j] =t;} \/\/fp=fopen("filel.dat","w");printf("%s",name);fputs("\\n",fp);fputs(name,fp);fclose(fp);return 0;}\/\/这个程序是固定在c语言文件的路径下的。

C语言读取包含字符串的文本文件
char *str;int i,L;str = (char*) malloc(sizeof(char) * 80);fgets(str,79,fp); \/\/ 读入一行 L = strlen(str);for (i=0;i<L;i++) {if (str[i]==',')str[i]=' ';}; \/\/ 逗号变空白 sscanf(str,"%s %d %d %s %s",...);...

嘉峪关市13477719162: 用c语言字符串文件读写问题 -
调胁爱尔: #include "stdio.h"#include "string.h"#include "stdlib.h" int main(int argc,char *argv[]) { FILE *fp=NULL; char content[1024]={0},ch; char *p=NULL; int i=0; if(argc!=3) { printf("Arguments number wrong!\n"); exit(0); } if((fp=fopen(argv[1],"r")...

嘉峪关市13477719162: C语言程序从文件读取特定的字符串 -
调胁爱尔: #include<stdio.h> int a; char b,c[100]; bool compare(char *s){if(s[0]=='A'&&s[1]=='B'&&s[2]=='C'&&s[3]=='D')return true;return false; } int main(){FILE * fp1 = fopen("D://input.txt", "r");//打开输入文件FILE * fp2 = fopen("D://output.txt", "w...

嘉峪关市13477719162: C语言怎么从文件中读取字符串并和已有字符串比较. 比如我文件里有一个 - ---!FILE TEST -
调胁爱尔: 首先你应该打开文件然后读取文件里面的内容到一个缓冲区,然后调用strcmp与目的个字符串进行比较就可以了

嘉峪关市13477719162: C语言文件操作问题:txt文件中字符串的读写(30分,优秀的可以+20分)
调胁爱尔: #include &lt;stdio.h&gt; int main(int argc, char *argv[]) { FILE *fp=fopen("a.txt","r"); char s[20]; while(fgetc(fp)!='\n');//单个字符读取,直到读到换行符 fgets(s,4,fp); //字符串读取 fclose(fp); puts(s); } 够短了吧...

嘉峪关市13477719162: C语言中读取文件的问题 -
调胁爱尔: 字符串是在真正内容之后再加一个零字符'\0'.对于你的这个要求,你需要将字符数组定义为a[3],并始终令a[2]这个元素等于'\0'.

嘉峪关市13477719162: C语言文件读写问题 -
调胁爱尔: 本质上,文件是不能做到删除一行的,但是可以通过以下两种方法来实现删除某一行的行为.1,把你这三行数据用getline函数每一行作为一个字符串读入内存中(譬如定义个char buffer[3][20]读入“I am a student.”,“I am a teacher.”,“I am a singer.”三个字符串)然后删除第二个字符串后,将新的字符串数组写入一个新的文件,或者清空当前文件后重新写入.2,直接进行文件操作,以”\n\r“作为行结束标志,用两个指针扫描文件,然后找到删除行的起始位置和结束位置,然后进行一个个字符串的复制操作(结尾指针内容复制到开头指针处)一直到文件结束.

嘉峪关市13477719162: C语言文件读入字符串问题 -
调胁爱尔: fscanf遇到\r, \n, \v, \t, \f, 空格时会结束,所以不能正确解析文件的数据行,可考虑使用sscanf.

嘉峪关市13477719162: C语言里如何把已有的字符串写入文件里 -
调胁爱尔: int main() { FILE *fp; fp = fopen("aa.txt", "w"); if(fp ==NULL) printf("打开文件aa.txt失败\n"); fprintf(fp, "Hello Workd!"); return 0; } aa.txt 是在你当前文件夹中的,就是和程序就同一个目录下,你也带路径 c:/my/aa.txt

嘉峪关市13477719162: C语言中如何将文件中的某行的字符串读取出来? -
调胁爱尔: #include "stdio.h" void main() { FILE *f=fopen("c:\\a.txt","r"); char sz0[100]; char sz1[100]; int d0,d1; if(f) { while(!feof(f)) { if(4==fscanf(f,"%s%s%d%d",sz0,sz1,&d0,&d1)) { printf("%s %s %d %d\n",sz0,sz1,d0,d1); }} fclose(f); } else { printf("fail to open file.\n"); }}

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网