1.fopen()
FILE *fopen(const char *filename, const char *mode)
例
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp); //int fgetc(FILE *stream);这里返回值是int,为什么下边给的是%c?
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
2.fgets()
char *fgets(char *str, int n, FILE *stream)
#include <stdio.h>
int main()
{
FILE *fp;
char str[60];
/* 打开用于读取的文件 */
fp = fopen("file.txt" , "r");
if(fp == NULL) {
perror("打开文件时发生错误");
return(-1);
}
if( fgets (str, 60, fp)!=NULL ) {
/* 向标准输出 stdout 写入内容 */
puts(str);
}
fclose(fp);
return(0);
}
3.sscanf() /fscanf()
作用:匹配字符
int sscanf(const char *str, const char *format, …)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int day, year;
char weekday[20], month[20], dtm[100];
strcpy( dtm, "Saturday March 25 1989" );
sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year );
printf("%s %d, %d = %s\n", month, day, year, weekday );
return(0);
}
4.在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename: 要打开的文件名
mode: 要打开文件的方式
access: 打开文件的属性
fstream有两个子类:
ifstream(input file stream)和ofstream(outpu file stream),
ifstream默认以输入方式打开文件
ofstream默认以输出方式打开文件。
参考:https://www.cnblogs.com/batman425/p/3179520.html
ifstream file1;
file1.open("c:\\config.sys",ios::binary|ios::in,0);
5.getline(cin, inputLine);
std::string strFeature;
ifstream file1;
static int num_all=0;
file1.open("./feature_4.txt");
if(!file1.is_open())
{
g_print ("error read feature\n");
}
while(getline(file1,strFeature)){
num_all++;
}
6.freopen()
FILE *freopen(const char *filename, const char *mode, FILE *stream)
作用:把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。
#include <stdio.h>
int main ()
{
FILE *fp;
printf("该文本重定向到 stdout\n");
fp = freopen("file.txt", "w+", stdout);
printf("该文本重定向到 file.txt\n");
fclose(fp);
return(0);
}
需求:处理txt中名字和对应的128维float特征值
xiaoming.jpg -0.097970a0.412450a1.291050a0.029515a-1.281650a1.091200a-0.165351a2.284460a-1.428620a1.243580a0.465420a1.930530a0.118808a-1.720070a-0.959926a-0.570311a1.963640a-0.617950a1.082670a1.013750a-0.257759a0.332777a-1.094700a1.616360a-0.333840a1.275990a0.372964a0.370306a-0.403711a-0.156022a-1.147140a-0.032172a0.565637a0.156215a0.203820a0.143630a0.056337a-1.232980a-1.841970a-0.749862a0.490812a-1.680510a1.179840a-0.510200a-0.503570a0.859547a0.379501a0.319658a-0.558752a0.437925a1.008090a-0.274838a0.812967a-0.190285a0.620005a0.918370a0.560995a0.141753a-0.304128a0.066030a0.612695a-0.721343a-0.475753a-0.170001a-0.109278a1.871000a-0.187824a0.257390a0.684107a1.406470a-0.650492a0.199720a-0.123803a0.738289a-0.731479a0.727681a1.078600a2.656870a-0.396232a-0.788084a0.210822a-0.298030a-3.029180a0.506024a0.826963a-0.323328a-1.789490a-0.810607a-1.245780a1.618990a-0.061182a1.849130a-0.804396a0.215782a0.331796a0.337920a1.713730a-1.083400a0.371835a-0.263305a-0.513203a1.068190a0.416737a0.204614a-0.925300a-0.461793a-0.637195a-1.563390a1.195460a0.555956a-0.189917a-1.622950a0.517580a-0.994719a-1.142570a0.007303a-0.289721a0.899430a-0.114601a-1.350730a0.180728a-1.031870a0.673146a1.105750a1.876910a0.243448a0.439982a-0.13501310
float a[128];
std::string name;
freopen("feature_4.txt","r",stdin);
FeatureDataAll = (float*)calloc(sizeof(float),128 * 100);
for (int j=0; j<num_all;j++)
{
std::cin>>name;
int k=0;
std::cout << name << "\n" << std::endl;
for (int i=0+j*128;i<128*(j+1);i++)
{
std::cin>>a[k];
FeatureDataAll[i]=a[k];
k++;
printf("a%f", FeatureDataAll[i]);
}
}
}