문자열 배열 인 "name"을 포함하는 파일을 만들 필요가 있습니다. char 배열 및 char 배열 - "data"- C++에서 char 배열 -하지만 첫 번째 내가 직면 한 문제는 "데이터"에서 "이름"을 분리하는 방법입니다. 개행 문자는이 경우 작동 할 수 있습니다 (이름에 "\ n"이 없다고 가정). 그러나 "데이터"부분에 특수 문자를 사용할 수 있으므로 끝나는 시점을 알 수 없습니다. "데이터"크기의 데이터 앞에있는 파일의 int 값! 나는 다음과 같은 코드로이 작업을 수행하려고 :C++에서 이진 파일 읽기 및 쓰기
if((fp = fopen("file.bin","wb")) == NULL)
{
return false;
}
char buffer[] = "first data\n";
fwrite(buffer ,1,sizeof(buffer),fp);
int number[1];
number[0]=10;
fwrite(number ,1,1, fp);
char data[] = "1234567890";
fwrite(data , 1, number[0], fp);
fclose(fp);
하지만 "INT"부분이 바로 있었다면 나는 몰랐다, 그래서 나는이 일을 포함하여 많은 다른 코드 시도 :
char buffer[] = "first data\n";
fwrite(buffer ,1,sizeof(buffer),fp);
int size=10;
fwrite(&size ,sizeof size,1, fp);
char data[] = "1234567890";
fwrite(data , 1, number[0], fp);
을 정수를 보는 대신 파일을 열 때 파일에 4 개의 "NULL"문자가 표시됩니다. 그게 정상인가요? 내가 직면 한 다른 문제는 파일에서 다시 읽는 것입니다! 내가 읽으려고 한 코드가 전혀 작동하지 않았다. ("fread"로 시도했지만, "fseek"를 사용해야하는지, 아니면 다른 문자를 읽었는지 확실하지 않다.
나는 다음 다음 쓰고 다시 읽어와 같은 클래스 사용의 생각 :
class Sign
{
public:
char* name;
int size;
char* data;
};
을하지만 C++에서 쉬운 일이 아니었다!
나는 또한 다음과 같은 시도 :void saveData(char* filename) {
fstream filestr;
int n;
n=10;
char* data= "1234567890";
filestr.open (filename, fstream::out | fstream::binary);
for (int j = 0; j<5 ; j++)
{
filestr << n;
for (int i = 0; i < n; i++) {
filestr << data[i];
}
}
filestr.close();
}
void readData(char* filename) {
fstream filestr;
int n =0;
filestr.open (filename, fstream::in | fstream::binary);
int m =0;
//while(!filestr.eof())
while(m<5)
{
filestr >> n;
char *data = new char[n];
for (int i = 0; i < n; i++) {
filestr >> data[i];
}
printf("data is %s\n",data);
m++;
}
filestr.close();
}
을
하지만 읽음 ing도 작동하지 않았다.
나는 이상한 인물이 나타납니다.
지금까지 나를 위해 작동 코드는 이것이다 :
void saveData(char* filename) {
fstream filestr;
char * name = "first data\n";
int n;
n=10;
char* data= "asdfghjkl;";
filestr.open (filename, fstream::out | fstream::binary);
for (int j = 0; j<5 ; j++)
{
filestr << name;
filestr << strlen(data);
filestr << data;
}
filestr.close();
}
void readData(char* filename) {
fstream filestr;
int n =0;
filestr.open (filename, fstream::in | fstream::binary);
while(!filestr.eof())
{
string name;
getline(filestr,name,'\n');
printf("name is %s\n",name.c_str());
filestr >> n;
char *data = new char[n];
for (int i = 0; i < n; i++) {
filestr >> data[i];
}
printf("n is%d\ndata is %s\n",n,data);
}
filestr.close();
}
하지만 읽기에 문제가 있습니다 :
가1- (나는 그것이 진짜 문제는 생각하지 않습니다)를 실제 데이터 외에 다른 문자를 인쇄합니다. 2 - readData
에 대한 함수 번만 쓰는 동안 나는 마지막 필드에서 모든 필드를 빈 필드로 가져옵니다. 왜 그 사람이 누군지 압니까? 그것은 while(!filestr.eof())
과 관련이 있습니까? 도움을
덕분에
난 그냥 쓴 적이되어, readData 기능을 사용하여 데이터를 읽을 시도를하지만 코드가 ASDFGHJKL입니다 "로의 printf의 출력을 가지고, ²²²²▌▌1US을 \ ♀ + "데이터가 char * data ="asdfghjkl; "일 때 누구나 그 이유를 알 수 있습니까? – Reem