第1个回答 2009-04-26
用string,先getlien把整行读出来,再分割字符串
ifstream("abc.txt");
string s;
getline(cin, s);
姓名 = s.substr(0, s.find(' '));
身高 = s.substr(s.rfind(' ') + 1);
第2个回答 2009-04-26
C逐行读取文本文件
#include <stdio.h>
#include <dir.h>
#include <string.h>
int READLINE(FILE *fPtr, char *strPtr, int strlen, char ellipsis);
int main(int argc, char *argv[])
{
FILE *finPtr;
char str[10240];
int i;
finPtr = fopen("c:\\1.txt","r");
do
{
i = READLINE(finPtr,str,sizeof(str),0xa);
if (i == 0)
printf("%s\n",str);
}
while(i >= 0);
fclose(finPtr);
return 0;
}
int READLINE(FILE *fPtr, char *strPtr, int strlen, char ellipsis)
{
int ch;
char *tmpPtr;
memset(strPtr,0x0,strlen);
ch=0x0;
tmpPtr=strPtr;
if(feof(fPtr))
return -1;
while(!feof(fPtr)&&ch!=0xa)
{
ch=fgetc(fPtr);
if(ch!=EOF&&ch!='\n')
{
*strPtr=ch;
strPtr++;
}
}
if(*tmpPtr==ellipsis||*tmpPtr=='\0'||*tmpPtr=='\n')
return 1;
else
return 0;
}
第3个回答 2020-07-26
假定文件在
abc.txt
中,无空白行
用读入1行,再找每行最后一个数的开始位置,用
sscanf
读得。
#include
main(){
file
*fin;
char
str[80];
int
i,l,n=0;
double
x[30000];
fin=fopen("abc.txt","r");
while(1)
{
if
(
fgets(str,80,fin)==null)
break;
l
=
strlen(str);
for
(i=l-1;i>0;i--){
if
(str[i-1]=='
'
&&
(str[i]>='0'
&&
str[i]<='9')){
sscanf(&str[i-1],"%lf",&x[n]);n++;break;}
};
}
for
(i=0;i
评论
0
0
加载更多
第4个回答 推荐于2017-10-10
关键步骤:
1、ifstream in;
2、in.open("abc.txt");
3、while(!in.eof())
{
in >> name >> age;
cout << name << " " << age << endl;
}
4、in.close();
思路:
1、声明一个文件流。
2、打开文件。
3、循环文件直到遇到文件结束符退出。
4、读取每行的数据。
5、关闭文件。
实现代码:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
ifstream in;
string name = "";
int age = 0;
in.open("abc.txt");
if (!in)
{
cout << "打开文件失败!" << endl;
return -1;
}
while(!in.eof())
{
in >> name >> age;
cout << name << " " << age << endl;
}
in.close();
return 0;
}
第5个回答 2009-04-26
用string,先getlien把整行读出来,再分割字符串
ifstream("abc.txt");
string s;
getline(cin, s);
姓名 = s.substr(0, s.find(' '));
身高 = s.substr(s.rfind(' ') + 1);
第6个回答 2009-04-26
C逐行读取文本文件
#include <stdio.h>
#include <dir.h>
#include <string.h>
int READLINE(FILE *fPtr, char *strPtr, int strlen, char ellipsis);
int main(int argc, char *argv[])
{
FILE *finPtr;
char str[10240];
int i;
finPtr = fopen("c:\\1.txt","r");
do
{
i = READLINE(finPtr,str,sizeof(str),0xa);
if (i == 0)
printf("%s\n",str);
}
while(i >= 0);
fclose(finPtr);
return 0;
}
int READLINE(FILE *fPtr, char *strPtr, int strlen, char ellipsis)
{
int ch;
char *tmpPtr;
memset(strPtr,0x0,strlen);
ch=0x0;
tmpPtr=strPtr;
if(feof(fPtr))
return -1;
while(!feof(fPtr)&&ch!=0xa)
{
ch=fgetc(fPtr);
if(ch!=EOF&&ch!='\n')
{
*strPtr=ch;
strPtr++;
}
}
if(*tmpPtr==ellipsis||*tmpPtr=='\0'||*tmpPtr=='\n')
return 1;
else
return 0;
}
第7个回答 2020-07-26
假定文件在
abc.txt
中,无空白行
用读入1行,再找每行最后一个数的开始位置,用
sscanf
读得。
#include
main(){
file
*fin;
char
str[80];
int
i,l,n=0;
double
x[30000];
fin=fopen("abc.txt","r");
while(1)
{
if
(
fgets(str,80,fin)==null)
break;
l
=
strlen(str);
for
(i=l-1;i>0;i--){
if
(str[i-1]=='
'
&&
(str[i]>='0'
&&
str[i]<='9')){
sscanf(&str[i-1],"%lf",&x[n]);n++;break;}
};
}
for
(i=0;i
评论
0
0
加载更多
第8个回答 推荐于2017-10-10
关键步骤:
1、ifstream in;
2、in.open("abc.txt");
3、while(!in.eof())
{
in >> name >> age;
cout << name << " " << age << endl;
}
4、in.close();
思路:
1、声明一个文件流。
2、打开文件。
3、循环文件直到遇到文件结束符退出。
4、读取每行的数据。
5、关闭文件。
实现代码:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
ifstream in;
string name = "";
int age = 0;
in.open("abc.txt");
if (!in)
{
cout << "打开文件失败!" << endl;
return -1;
}
while(!in.eof())
{
in >> name >> age;
cout << name << " " << age << endl;
}
in.close();
return 0;
}