C文件操作

来源:互联网 发布:手机解压缩软件 编辑:程序博客网 时间:2024/06/06 14:43



fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:
char * fgets(char * string, int size, FILE * stream);
头文件:include<stdio.h>
参数说明:
string 为一个字符数组,用来保存读取到的字符。
size  为要读取的字符的个数。如果该行字符数大于size-1,则读到size-1个字符时结束,并在最后补充’\0’;如果该行字符数小于等于size-1,则读取所有字符,并在最后补充’\0’。即每次最多读取size-1个字符。
stream 为文件流指针。
【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。

#include "stdafx.h"#include <stdio.h>#define MAX_LINE 1024#pragma warning(disable:4996)int _tmain(int argc, _TCHAR* argv[]){FILE * fp;char strLine[MAX_LINE];fp = fopen("service.txt", "r");if (fp == NULL) return 0;while (!feof(fp)){fgets(strLine, MAX_LINE, fp);printf("%s", strLine);}fclose(fp);printf("\n");return 0;}


逐行读取文件,并把文件写入到字符串数组中。

#include "stdafx.h"#include <stdio.h>#include<stdlib.h>#define MAX_LINE 1024#pragma warning(disable:4996)int _tmain(int argc, _TCHAR* argv[]){FILE * fp;char strLine[MAX_LINE];char * aProcessName[MAX_LINE];char * aCommandLine[MAX_LINE];int nCount = 0;fp = fopen("service.txt", "r");if (fp == NULL) return 0;while (!feof(fp)){fgets(strLine, MAX_LINE, fp);//printf("len:%d\n", strlen(strLine));//去掉回车换行for (int i = 0; i < strlen(strLine); i++){if (strLine[i] == '\n'){strLine[i] = '\0';}}if (nCount % 2 == 0){int idx = nCount / 2;aProcessName[idx] = (char *)malloc(strlen(strLine) + 1);strcpy(aProcessName[idx], strLine);}else{int idx = nCount / 2;aCommandLine[idx] = (char *)malloc(strlen(strLine) + 1);strcpy(aCommandLine[idx], strLine);}nCount++;}fclose(fp);printf("%d", nCount);printf("\n");for (int i = 0; i < nCount/2; i++){printf("%s\n", aProcessName[i]);}for (int i = 0; i < nCount / 2; i++){printf("%s\n", aCommandLine[i]);}printf("\n");return 0;}




















0 0
原创粉丝点击