1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
2、例程:
#include<stdio.h>
#include<string.h>
voidmain()
{
chara[100],b[100],c[100];
inti=3,j=4,k=0;//第三行,第四列
FILE*fp=fopen("data.txt","r");
while(fgets(c,100,fp)){//读入每行数据
i--;
if(i==0)strcpy(a,c);//读到第三行数据
b[k++]=c[j-1];//把每行的那列字符拷到b中
}
b[k]=0;
printf("第%d行数据:%s ",i,a);
printf("第%d列数据:%s ",j,b);
fclose(fp);
}
B. c语言如何读写 linux文本文件
Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操作)
//
fputc 向文件写入字符
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("test.txt","w"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
while ((ch=getchar())!='\n')
fputc( ch, fp );
fclose(fp);
}
-------------
小提示:
fp=fopen("test.txt","w") ,把"w"改为 "a" 可以创建文件并且追加写入内容
exit(0); 需要包含 stdlib.h 头文件,才能使用
//
fgetc 读取字符
#include <stdio.h>
#include <stdlib.h>
main( int argc, char *argv[] )
{
char ch;
FILE *fp;
int i;
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
while ((ch=fgetc(fp))!=EOF)
putchar(ch);
fclose(fp);
}
文件结尾,通过判断 EOF
//
fwrite 的使用
使数组或结构体等类型可以进行一次性读写
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp1;
int i;
struct student{
char name[10];
int age;
float score[2];
char addr[15];
}stu;
if((fp1=fopen("test.txt","wb"))==NULL)
{
printf("不能打开文件");
exit(0);
}
printf("请输入信息,姓名 年龄 分数1 分数2 地址:\n");
for( i=0;i<2;i++)
{
scanf("%s %d %f %f %s",stu.name,&stu.age,&stu.score[0],&stu.score[1], stu.addr);
fwrite(&stu,sizeof(stu),1,fp1);
}
fclose(fp1);
}
//
fread 的使用
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp1;
int i;
struct student{
char name[10];
int age;
float score[2];
char addr[15];
}stu;
if((fp1=fopen("test.txt","rb"))==NULL)
{
printf("不能打开文件");
exit(0);
}
printf("读取文件的内容如下:\n");
for (i=0;i<2;i++)
{
fread(&stu,sizeof(stu),1,fp1);
printf("%s %d %7.2f %7.2f %s\n",stu.name,stu.age,stu.score[0],stu.score[1],stu.addr);
}
fclose(fp1);
}
//
fprintf , fscanf, putw , getw , rewind , fseek 函数
这些函数的话我就不演示了 ,
这些函数基本都一对来使用,例如 fputc 和 fgetc 一起来用.
C. linux鎬庝箞杩愯宑鏂囦欢
linux鎬庝箞杩愯宑鏂囦欢鍛锛屼笅闈㈠氨璁╂垜浠鏉ョ湅鐪嬪惂銆
1銆佸畨瑁単cc g++缂栬瘧宸ュ叿銆
2銆佸垱寤轰竴涓鍚庣紑鍚嶄负.c鐨勬枃浠躲
3銆佹墦寮鏂囦欢锛屽噯澶囩紪杈戜唬鐮乿im c.c.
4銆佺紪鍐欎竴涓绠鍗曠殑浠g爜锛屽寘鍚澶存枃浠跺拰main鍑芥暟銆
5銆佸湪缁堢绐楀彛涓杈撳叆gcc c.c -o test缂栬瘧浠g爜銆
6銆佽緭鍏./test鍛戒护鍥炶溅鍗冲彲銆
D. 如何用C语言在linux上统计文件行数
统计行数可以通过统计换行符 来实现。不过需要注意的是,有些文件最后一行并不存在换行符,所以代码中需要对此作处理。
可以在达到文件结尾后,判断前一个字符,如果不是换行符,那么应补加最后一行统计。
代码如下:
假定输入文件为in.txt,该文件存在且可读。
#include<stdio.h>
intmain()
{
FILE*fp=NULL;//文件指针。
intc,lc=0;//c为文件当前字符,lc为上一个字符,供结尾判断用。
intline=0;//行数统计
fp=fopen("in.txt","r");//以只读方式打开文件。
while((c=fgetc(fp))!=EOF)//逐个读入字符直到文件结尾
{
if(c==' ')line++;//统计行数。
lc=c;//保存上一字符。
}
fclose(fp);//关闭文件
if(lc!=' ')line++;//处理末行
printf("文件共有%d行。 ",line);
return0;
}
样例输入输出:
如in.txt有如下内容:
testline1
testline2
则会输出:
文件共有2行。
E. linux鎵ц宑鏂囦欢linux鎵ц宑鏂囦欢
linux鎬庝箞杩愯宑璇瑷浠g爜锛
鍦╨inux涓嬭繍琛孋璇瑷浠g爜鏄姣旇緝绠鍗曠殑浜嬫儏銆侰璇瑷浠g爜涓嶈兘鐩存帴杩愯岀殑锛屼綘棣栧厛蹇呴』缂栬瘧閾炬帴锛屼箣鍚庣敓鎴愪竴涓鍙鎵ц岀殑鏂囦欢锛屽啀杩愯岃繖涓鏂囦欢銆
瑕佺紪璇慍璇瑷鐨勪唬鐮侊紝鍦ㄥ懡浠よ岃緭鍏ョ紪璇戞寚浠ら摼鎺ワ紝浣犺佺敤鍒扮殑搴撴枃浠舵垨鑰呬竴浜涘弬鏁帮紝杩欐牱杩愯屽畬涔嬪悗灏辫嚜鍔ㄧ敓鎴愬彲鎵ц屾枃浠朵簡銆
linux缁堢涓嬪備綍杩涜孋璇瑷缂栬瘧锛
1銆佽繘鍏linux绯荤粺锛屽垱寤篊鏂囦欢鈥渧imtest.c鈥濆悓鏃惰繘鍏vim缂栬緫鐣岄潰锛屼篃鍙浠ュ埄鐢ㄦ寚浠も渢ouchtest.c鈥濆垱寤哄悗锛岀劧鍚庘渧imtest.c鈥濊繘鍏vim缂栬緫鐣岄潰銆
2銆乿im缂栬緫鐣岄潰锛岀敱鈥淓SC鈥濆缓鏉ュ垏鎹涓夌嶆ā寮忥紝涓鑸妯″紡锛氬湪Linux缁堢涓杈撳叆鈥渧im鏂囦欢鍚嶁濆氨杩涘叆浜嗕竴鑸妯″紡,浣嗕笉鑳借緭鍏ユ枃瀛椼傜紪杈戞ā寮忥細鍦ㄤ竴鑸妯″紡涓嬫寜i灏变細杩涘叆缂栬緫妯″紡锛屾ゆ椂灏卞彲浠ュ啓绋嬪簭锛屾寜Esc鍙鍥炲埌涓鑸妯″紡銆
3銆侀氳繃杈撳叆搴曢儴鎸囦护鈥滐細setnu鈥濇樉绀鸿屾暟銆
4銆佽緭鍏ュ畬C浠g爜鍚庯紝璁板緱鈥淓SC鈥濋敭鍒囨崲锛岃緭鍏モ滐細wq鈥濅繚瀛橀鍑恒
5銆佹寚浠も渓s鈥濇樉绀哄綋鍓嶇洰褰曚笅鏂囦欢锛屾垜浠鍙浠ヨ佸埌瀛樺湪鐨凜鏂囦欢缂栬瘧鈥済cc-otesttest.c鈥濓紝缂栬瘧鎴愬姛鍚庯紝杩愯屸./test鈥濄
涓轰粈涔坙inux杩愯宑璇瑷鏂囦欢浼氭姤鏉冮檺涓嶅燂紵
淇鏀规潈闄愬彲浠ヨВ鍐宠ラ棶棰樸
鍙浠ヤ娇鐢╟hmod鍛戒护淇鏀规潈闄愩
璇娉曪細chmodmodefile...
璇存槑:Linux/Unix鐨勬。妗堣皟鐢ㄦ潈闄愬垎涓轰笁绾:妗f堟嫢鏈夎呫佺兢缁勩佸叾浠栥傚埄鐢╟hmod鍙浠ヨ棄浠ユ帶鍒舵。妗堝備綍琚浠栦汉鎵璋冪敤銆
鍙傛暟:
mode:鏉冮檺璁惧畾瀛椾覆锛屾牸寮忓備笅:...]锛屽叾涓
u琛ㄧず璇ユ。妗堢殑鎷ユ湁鑰咃紝g琛ㄧず涓庤ユ。妗堢殑鎷ユ湁鑰呭睘浜庡悓涓涓缇や綋(group)鑰咃紝o琛ㄧず鍏朵粬浠ュ栫殑浜猴紝a琛ㄧず杩欎笁鑰呯殕鏄銆
+琛ㄧず澧炲姞鏉冮檺銆-琛ㄧず鍙栨秷鏉冮檺銆=琛ㄧず鍞涓璁惧畾鏉冮檺銆
r琛ㄧず鍙璇诲彇锛寃琛ㄧず鍙鍐欏叆锛寈琛ㄧず鍙鎵ц岋紝X琛ㄧず鍙鏈夊綋璇ユ。妗堟槸涓瀛愮洰褰曟垨鑰呰ユ。妗堝凡缁忚璁惧畾杩囦负鍙鎵ц屻
-c:鑻ヨユ。妗堟潈闄愮‘瀹炲凡缁忔洿鏀癸紝鎵嶆樉绀哄叾鏇存敼鍔ㄤ綔
-f:鑻ヨユ。妗堟潈闄愭棤娉曡鏇存敼涔熶笉瑕佹樉绀洪敊璇璁鎭
-v:鏄剧ず鏉冮檺鍙樻洿鐨勮︾粏璧勬枡
-R:瀵圭洰鍓嶇洰褰曚笅鐨勬墍鏈夋。妗堜笌瀛愮洰褰曡繘琛岀浉鍚岀殑鏉冮檺鍙樻洿(鍗充互閫掑洖鐨勬柟寮忛愪釜鍙樻洿)
--help:鏄剧ず杈呭姪璇存槑
--version:鏄剧ず鐗堟湰
linux鎬庝箞缂栬瘧c鐨勬簮绋嬪簭鐨勶紵gcc锛岀紪璇戝懡浠ゆ槸浠涔堬紵
缂栬瘧鏂规硶锛氭牸寮廹cc甯哥敤鐨勯夐」鏈绠鍗曠殑鏄:gcchello.c榛樿ょ殑鎯呭喌涓嬪皢鐢熸垚a.out鐨勫彲鎵ц屾ф枃浠讹紝鍙闇瑕佸湪缁堢涓婅緭鍏./a.out灏卞彲浠ョ湅鍒版墽琛岀殑缁撴灉锛屽傛灉浣犳兂鎸囧畾鐢熸垚鐩鏍囨枃浠剁殑鍚嶅瓧閭d箞浣犲彲浠ュ姞涓-o閫夐」,鍛戒护濡備笅:gcc-ohellohello.
c鍛戒护锛歡cc-chellohello.c鎵╁睍璧勬枡锛歡cc鍛戒护鐨勫熀鏈鐢ㄦ硶gcc鍏朵腑锛宖ilenames涓烘枃浠跺悕锛沷ptions涓虹紪璇戦夐」銆
褰撲笉浣跨敤浠讳綍缂栬瘧閫夐」缂栬瘧hello.c鏃讹紝gcc灏嗕細鑷鍔ㄧ紪璇戜骇鐢熶竴涓猘.out鐨勫彲鎵ц屾枃浠讹細#lshello.c#gcchello.c#lsa.outhello.c鎵ц岋細#./a.outHello,World!浣跨敤-o缂栬瘧閫夋嫨锛屽彲浠ヤ负缂栬瘧鍚庣殑鏂囦欢鎸囧畾涓涓鍚嶅瓧锛#lsa.outhello.c#gcchello.c-ohello#lsa.outhellohello.c鎵ц岋細#./helloHello,World!娉ㄦ剰锛氫娇鐢-o閫夐」鏃讹紝-o鍚庨潰蹇呴』璺熶竴涓鏂囦欢鍚嶏紝鍗筹細-ooutfile銆備负浜嗕究浜庢弿杩板悗闈㈢殑閫夐」锛屽垹闄hello鍜宎.out鍙鎵ц屾枃浠躲
F. 用linux下的c语言读取txt文件中的列数据
1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第回几个字符,再存入到一答个字符串当中。
2.例程:
#include<stdio.h>
#include<string.h>
voidmain()
{
chara[100],b[100],c[100];
inti=3,j=4,k=0;//第三行,第四列
FILE*fp=fopen("data.txt","r");
while(fgets(c,100,fp)){//读入每行数据
i--;
if(i==0)strcpy(a,c);//读到第三行数据
b[k++]=c[j-1];//把每行的那列字符拷到b中
}
b[k]=0;
printf("第%d行数据:%s ",i,a);
printf("第%d列数据:%s ",j,b);
fclose(fp);
}