C语言中如何将文件中的某行的字符串读取出来?

作者&投稿:师匡 (若有异议请与网页底部的电邮联系)
C语言中从.txt文件中按行读取字符串至数组中,怎么写?~

可以设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔写。
代码如下:
#include int main()
{
int v[100];//开一个足够大的数组。
int i = 0, j;
FILE *fp;//文件指针 fp = fopen("in.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%d", &v[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%d ", v[j]);
}
return 0;
}

扩展资料
1、字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。
2、如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' )。

#include #include int main(){FILE *fp;char cl[100];if((fp=fopen("1.txt","r"))==NULL)exit(1);while(fscanf(fp,"%s",cl)==1)printf("%s
",cl);if(fclose(fp)!=0)exit(1);return 0;}
C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MaxCols 2000     //设定每行字符数不超过MaxCols,根据变化调整 
//获取已经打开文件fp的第line行内容到stri,如果成功返回得到的字节数,
//如果没有那么多行,返回-2 
int getlinetxt(FILE *fp,int line,char *stri){
int i;
fseek(fp,0,0); //指针到文件最开始
for(i=0;i<line;i++) 
if(fgets(stri,MaxCols,fp)==NULL) //没有这么多行错误
return -2;
  return strlen(stri);
}
//获取filename文件的第line行内容到stri,如果成功返回得到的字节数,
//如果打开文件失败,返回-1,如果没有那么多行,返回-2 
int getfiletxt(char *filename,int line,char *stri){
FILE *fp;
if ((fp=fopen(filename,"r"))==NULL){
//打开文件错误,返回-1 
return -1;
}
return getlinetxt(fp,line,stri);
fclose(fp);
}
int main(){
char s[MaxCols];
int row=10, flag;
//以下例子是获取d:emp.txt的第10行文本内容 
flag=getfiletxt("d:\emp.txt",row,s);
if (flag==-1)
printf("打开文件错误
");
else if(flag==-2)
printf("文件中的行数不足%d行
",row);
else
printf("获取到的文本是: 
%s包含最后的换行符,长度=%d
",s,flag);
}


所谓的某行你没有给出确切的定义,通常读文件采用的方法是将文件内容的全部,或者部分保存在缓存中,如果你是想读取第几行,那么就可以使用字符指针,寻找缓存中的'\n',并进行计数,找到想要的行。
如果想读取的是某个关键字所在的行,同样是可以使用字符指针,使用strncmp方法寻找关键字所在的位置,或者直接使用strstr方法查找。
需求不明确的时候不容易确定最佳的查找方式。

#include<stdio.h>
#include<stdlib.h>
void main ()
{
char s1[80],s2[80];
int a1,a2;
FILE *fp;
if((fp=fopen("t.txt","r"))==NULL)
{
printf("open wrong");
exit(1);
}
fscanf(fp,"%s%s%d%d",s2,s1,&a1,&a2);
fprintf(stdout,"%s,%s,%d,%d\n",s1,s2,a1,a2);
}

把ABC DEF 10 20存在t.txt中
读取并保存在 s1,s2,a1,a2
输出

scanf("%s",s); //这是读入一个字符串,遇到空格回车就停止读入
gets(s); //这个是读入一整行,只有遇到回车才停止读入

用fscanf()就可以啦,

char a[80],b[80];
int c,d;

FILE *fp=fopen("data.txt","r");

fscanf(fp,"%s %s %d %d",a,b,&c,&d);


怎样用C语言从txt文件中读入数据?
1 以fopen打开文件,使用"r"方式。2 通过fscanf,按照文件中的数据格式,读入数据。3 关闭文件并使用数据。如文件in.txt中存在三个以空格分隔的数据,依次为整型,字符串,以及浮点型,则读取数据的代码可以写作:int main(){ FILE *fp; int a; char s[100]; float f; fp = f...

标准C语言中如何一次读取某文件中的多行数据
fscanf读取时,默认会到空白字符截止。所以如果文件中不存在其它空白字符,那么可以以fscanf实现一次性读取多行的效果,比如文件中存储为 12.3name那么要一次性读取这三行数据,可以使用:int a;float b;char c[20];fscanf(fp, "%d%f%s",&a,&b,c);其中,fp为打开该文件的文件指针, 分别将三行...

c语言如何从文件中读入矩阵,存入二维数组?
include<iostream> using namespace std;int mat[101][101];int main(){ int n,m;\/\/行,列...int i,j;freopen("D:\\\\in.txt","r",stdin);\/\/读文件...cin>>n>>m;\/\/读入矩阵行数,列数...for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>mat[i][j];return 0;} ...

C语言。读取一个txt文件,将文件中偶数行的内容输出到另外一个文件中...
include<stdio.h>#include<string.h>int main(){FILE *fp1,*fp2;char str[100];if((fp1=fopen("data1.txt","r"))==NULL)\/\/打开源文件{printf("不能打开文件!!!\\n");return 1;}if((fp2=fopen("data2.txt","w"))==NULL)\/\/打开目标文件{printf("不能打开文件!!!\\n");return ...

C语言如何将txt文件中的数据存入结构体中
因为结构体它里面有多种数据, 所以如果一个一个保存肯定是麻烦的. 所以, 如果保存的文件不是给用户看的, 而是只为程序所用, 那么直接用二进制方式打开文件, 然后用fwrite把结构的二进制数据写入内存 include <stdio.h>struct dat{ int i;char ch;double d;};int main(){ FILE *p = fo...

请问如何用C语言实现将TXT文件中第三列的数值分别读取放置到x[i...
若floats;则用%.6f输出。double误差小些。#include#include#includemain(){floatx[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6};floaty[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4};doubles=0;inti;for(i=0;i<10;i++){s=s+sqrt((x[i]-...

C语言中,如何将文本文件的内容输出到屏幕?
fpr = fopen(my_filename, "r" ) ; \/* r:以文本方式打开文件 *\/ if( fpr == NULL ) \/* 若文件打开失败,则输出错误信息,并直接退出程序 *\/ { printf("Can't open %s for read !\\n", my_filename ) ;exit(1) ;} fgets(buffer, BUFFERLEN, fpr ) ; \/* 从文本文件中读取...

如何在C语言中读取一个文件中的一段字符串去另一个新文件?
分析:程序的逻辑很简单。程序必须打开两个文件,以可读的方式打开一个已有文件和以可写的方式打开一个新文件,后将已有文件中的内容,暂时存放在内存中,再写入新的文件,后关闭所有文件,程序结束。步骤1:首先需要声明两个文件指针,并让它们分别指向打开的旧文件和新文件,并检查文件是否被打开,以下...

C语言中如何将从文件里读出的字符存放在字符串中?
include <stdio.h> include <string.h> int main(void){ FILE * file1= fopen("ku.txt","r");char content[256];while(fscanf(file1,"%256[^\\n]\\n",content){ if (strstr(content,"question")){ FILE * file2= fopen("test.txt","w");fprintf(file2,content);fscanf(file1,"...

如何用c语言实现删除文件中指定的数据;例如
1、首先我们输入【deleteScore】函数,先看整体代码,再一一解释。2、在接下来我们输入永久循环语句。3、再接下来,我们选择操作删除的方式。4、再接下来我们就可以调用删除的函数了。注意事项:C语言提供了许多低级处理的功能,并仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式...

双塔区13948005183: 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"); } }

双塔区13948005183: c语言 如何将文件中的字符串逐行读入保存在字符数组中 -
势嵇普罗: #include #include int main(void){FILE *fp = NULL;char buf[1024] = {0};char *p = buf;fp = fopen("./tt", "r+");//注:当前目录下的tt文件已存在if(NULL == fp){return 0;}fseek(fp, 0, SEEK_SET);while(1 == fscanf(fp, "%s", p)){p = buf + strlen(buf);*p++ = '$';}printf("%s ", buf);printf("\n\r");fclose(fp);return 0;}

双塔区13948005183: C语言如何查找 某字符串 在所给的文本文件中的哪一行,并输出该行文字 -
势嵇普罗: 从文件中查找数据并输出,按以下步骤操作: 1. 打开文件,如果文件未找到,报错,结束 fopen 2. 输入待查的字符串,存到变量中 gets 3. 逐行循环读取文件,直到文件结束 fgets 4. 检查字符串是否在该行中,如果在,则输出该行,关闭文件,结束.否则继续查找 strstr 5. 循环结束,输出未找到该字符串. 6. 关闭文件.fclose 相关代码和运行效果如下图:

双塔区13948005183: C语言编写一个程序从特定的文件中提取特定的字符串. -
势嵇普罗: 按你追问的要求改了一下.这段代码能把键盘输入的特定字符串后面双引号内的文字提取出来存入XYZ.txt文件中.在提取过程中滤除了源文件中的'\n'和' '.供参考…… #include "stdio.h"// #include "string.h"// #include "stdlib.h"// void main(...

双塔区13948005183: 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

双塔区13948005183: C语言 如何从一个文件中读取一段含\n的字符串 -
势嵇普罗: 1、可以使用fgets()函数从文件中 读一行字符串,存入char 型数组,自动含\n.2、下面例程读一行输出1行.1234567891011121314 #include <stdio.h> intmain() { FILE* pFile; charmystring [1000]; pFile = fopen("myfile.txt", "r"); if(pFile ==...

双塔区13948005183: C语言对txt文件中某一行的某几个字符修改 -
势嵇普罗: 以r方式打开文件,用fgets()读取一行字符001/xxxxxxxxx/ 用strchr找到第一个/出现的位置 将此位置之后的内容覆盖为你要修改的内容,并加上/以及结束标记'\0' 关闭文件,然后重新以w方式打开文件,文件内容会被自动清空 用fputs将修改后的字符串写入文件 关闭文件

双塔区13948005183: C语言中如何输出文件中的指定行全部内容? -
势嵇普罗: 1. 先用将文件中所有内容读到二维字符数组buf[][]中.2. 要输出第x行的内容,直接输出buf[x-1]即可 3. 全部读入还有一个好处,当要修改文件内容时,先读入数组,在数组中做修改,再写回文件,远比在文件中直接修改方便得多. 4. 1 2 3 4 5 ...

双塔区13948005183: c语言按行处理txt文件中的字符串 -
势嵇普罗: 思路简介:1. 从文件夹按行读入字符串;2. 定义函数删除指定字符串中连续的字符;3. 将处理后的字符串输出到文件.参考代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 100 char del(char *str,int i,int len);//声明字符...

双塔区13948005183: 请问我想向.txt文件中逐行读取特定字符串,C语言该如何实现? -
势嵇普罗: 示意代码如下 ,自己写完整吧#include <stdio.h>#include <string.h> FILE *fp; char str[1024]; int n=0; fp=fopen("man.txt", "r"); while( fgets(str,sizeof(str),fp) ) { if ( strncmp( str, "edge", 4 )==0 ) n++; } fclose(fp); printf("n=%d\n", n );

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