c++ txt파일 입출력

pk7955의 이미지

#include
#include
#include

using namespace std;

void writeFriends(FILE *m, int n){
string name;
string PhoneNumber;
string Address;
for (int i = 1; i <= n; i++){
cout << "Name : ";
cin >> name;
cout << "Phone Number : ";
cin >> PhoneNumber;
cout << "Address : " ;
cin >> Address;
cout << endl;
}

//void readFriends(fstream a,int n){
}
void main(){
FILE *fp; // file descriptor in C
fstream inf; // file stream in C++

int numOfFriends;

cout << "How many friends? ";
cin >> numOfFriends;
cout << endl;
fopen_s(&fp, "c:\\Users\\pc-pc\\documents\\visual studio 2010\\Projects\\hw111\\hw111\\myfriends.txt", "w+");
writeFriends(fp, numOfFriends);
fclose(fp);
inf.open("c:\\Users\\pc-pc\\documents\\visual studio 2010\\Projects\\hw111\\hw111\\myfriends.txt");
//readFriends(inf, numOfFriends);
inf.close();
}

안녕하세요 제가 과제중인데 이해가 잘안가서 질문드립니다. 이 코드가 뭐냐면은 몇명의 친구가 있나물어보고 그 수만큼의 사람들의 이름 핸드폰번호 주소를 입력해서 txt파일에 저장하는 코드인데요 저기 writeFriends 함수에서 입력을 받으면 이게 실행창에만 입력이되고 txt파일에는 저장이 되지 않더군요 저기 FILE *m을 인자로 받는 코드를 한줄정도 써서 txt파일에 써야할것같은데 제가 그걸 몰라서....ㅜㅜ c에는 fprintf 이거 쓰면 되던데 저기서는 어떻게 해야하나요??

sdjskr의 이미지

C의 FILE 과 C++의 fstream을 둘다 사용할 수 있는지의 여부를 테스트하는 심플한 코드이군요.

실행창에만 입력되고 저장이 안되는 이유는 저장하는 코드가 없기 때문입니다.

fprintf 는 string인자를 받는 것이 아니기 때문에 형변환은 필수이고요.

이 싸이트는 코드 붙혀넣는게 안습이네요. 첨부 파일 참조하세요.

using namespace std;

void writeFriends(FILE *m, int n) {

string name; string PhoneNumber; string Address;

const char *char_name = name.c_str(); const char *char_address = Address.c_str(); const char *char_PhoneNumber = PhoneNumber.c_str();

for (int i = 1; i <= n; i++) {

cin.ignore();

cout << “Name : “; getline(cin, name);

cout << “Phone Number :”; getline(cin, PhoneNumber);

cout << “Address : “; getline(cin, Address);

cout << endl;

fprintf(m, “%s, %s, %s\n”, char_name, char_PhoneNumber, char_address); }

//void readFriends(fstream a,int n){
}
void main() { FILE *fp; // file descriptor in C fstream inf; // file stream in C++

int numOfFriends;

cout << “How many friends? “;

cin >> numOfFriends;

fopen_s(&fp, “c:\\test\\text.txt”, “w+”); writeFriends(fp, numOfFriends); fclose(fp);

cout << “file closed” << endl; system(“pause”); inf.open(“c:\\test\\text2”); //readFriends(inf, numOfFriends); inf.close();
}

댓글 첨부 파일: 
첨부파일 크기
Image icon result.png26.33 KB
Image icon code.png23.33 KB
pk7955의 이미지

죄송한데 혹시 readFriends도 어떻게 짜야 하는지 알수있을까요..?

sdjskr의 이미지

void readFriends(fstream &inf, int n)
{
string str;
int line{ 0 };

while (line != n)
{
getline(inf, str);
cout << str << '\n';
line++;
}

cout << endl;
}

그리고 메인 함수 다시 정리요.
void main()
{
FILE *fp; // file descriptor in C
fstream inf; // file stream in C++

int numOfFriends;

cout << "How many friends? ";

cin >> numOfFriends;

fopen_s(&fp, "c:\\test\\text.txt", "w+");
writeFriends(fp, numOfFriends);
fclose(fp);

cout << "file closed" << endl;

inf.open("c:\\test\\text.txt");

readFriends(inf, numOfFriends);
inf.close();

system("pause");
}

댓글 첨부 파일: 
첨부파일 크기
Image icon read_from_file.png19.3 KB

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.