C++ :: Displaying A Struct From A File (binary Mode)
Sep 28, 2013
I have a file in which I have written a structure called "Record".
Here is the struct definition:
Code:
#define IDSIZE 10
struct Record{
char id[IDSIZE];
int score;
};
Here's the code where I wrote to the file:
Code:
Record record;
char* id = "H12345678";
int score = 50;
record.id = id;
record.score = score;
file.write((const char*)&record, sizeof(record));
}
Here's a screenshot of the file in windows: [URL].... To the left is the id, 9 characters. To the right, well I'm assuming that's the score that I wrote.
And here's the problem, reading from the binary file:
Code:
Record record;
fstream file(argv[1], ios::in | ios::binary);
if(!file){
cerr << "Could not open the file." << endl;
return 1;
}
char* id = new char[IDSIZE];
[Code]...
The ID reads perfectly. The score...always returns 0, despite that it should show "50".
When you have to write data on a file in binary mode multiple times (without closing the file), is the put pointer left where you ended writing the last time, or do you have to use tellp() or seekp() again and again to make sure you write at the right place?
I would have the same question about the get pointer, does he stay in place after you're done reading something (without closing the file, of course), or do you have to set it back at the right place with seekg() ??
Your goal is to open this struct of students (the binary file). Once open, the first job is to print out each student. Afterwards, display all students with a gpa of 3.5 and higher. Finally, display all students with the major of Computer Science or Game Programming. Be sure to title each category of items.
He gave us a .cpp file and a .h file that we're suppose to use to run the program. He doesn't want us to change his original code, except we can add the needed code to run his code (i.e. Struct & Main).
My problem is that I get an Abort() crash message in VS2013 when I try to run it. Now, in line 95 of the cpp file if I replace the char* with "", it runs fine showing the GPA with blank entries for the other print parameters. I've read the Binary Files chapter of the Pearson textbook several times and it doesn't have anything to say about working with char pointers.
Header file:
#pragma once //Professor's code struct StudInfo //Start of my code { char* fName; char* lName; char* major; double gpa;
except when the string exceed 11 characters. I guess it's because it has to pick a fixed sized for the string? but what if I want to always be able to have string up to 200 character? because now I can't exceed 11..I know writing a string with c_str() works, but I would like to write/read the structure in one shot.
Below is the code for reading a struct that was stored in a binary file. Problem is while reading from file I get the name without first character and age is always equal to zero which it should not be.
I am parsing a binary data file by casting a buffer to a struct. It seems to work really well apart from this one double which is always being accessed two bytes off, despite being in the correct place.
If I attempt to print GROSS using printf("%f", row->GROSS) I get 0.0000. However, if I change the type of GROSS to char[8] and then use the following code, I am presented with the correct number...
Code:
typedef struct example { double d; }
example; example *blah = (example*)row->GROSS; printf("%f", blah->d);
I am making a Binary Tree program for a Data structures class proyect. The program consist of displaying a Binary tree diagram and also to give the inorder,postorder and preorder of the diagram. I made the program program give me the inorder,postorder and preorder of the binary tree. However I am having problems with the display. I am trying to use breadth first search for the display, and I made the funtion for BFS but I am stuck on how to proceed.My code is the following:
Following is the program I wrote it basically takes 9 inputs and then save them into binary file. then print out the data stored in binary data and find inverse of it then print the inverse out. but its stuck in a loop somewhere.
Code: #include <stdio.h> int main() { int a[3][3],i,j; float determinant=0; int x; FILE *fp = fopen ("file.bin", "wb");
I have an idea which i will try to implement in C++,I want to compress file size through making my own numbering system which is 80-based number, I do really want to know whether this even possible ? I learnet that Hexadecimal uses symbols like A, B, C, D, E, F to represent 10,11,12,13,14,15 -- and that's what i want to do to my own numbering system but in a bigger scale .if possible: How can i use C++ to open a file in Hex mode ?
I want to display a bmp file of resolution 600*420 (using c compiler like code block ) by manual loading. I tried to display the image by loading the pixel value. but this method has a limitation that it take up pixel value of image upto 64kb size.
So now i am trying to load it manually. What are the steps that i has to follow, what are the header files that i has to use ?
My system specification are windows xp professional , intel pentium 4 cpu. I don't know where to start ,does this method has any limitaton ,...etc ........
I'm working on a program that can load all words from a dictionary "English2.txt" (it's attached to the post), then put every word into a 2-dimensional matrix (every line is reserved for one word) and display them. After loading every word into a matrix, when I try to display first 8 words with printf, I can't do it without '' at the end of a line. Otherwise only the 8th word is displayed... What's more, when I try to read the length of the first word with strlen, it says, that it has 4 characters (in fact there are only 3 and it's the word "AAA"). What could be the reason for that?
i have turbo c++ 3.0 installed . my program is compiled without error and is running. but when i choose option to display scores in the consol , it hangs . check my code. i have to run this on same compiler. i just want to display all the contenets of text file .
Is it possible to display data from a textfile and also save data in to a textfile, reason being is for me to create back-ups of data into a textfile hidden somewhere in a safe location in the local disk or server in case of database error and failure.
It's a shock to me seeing the partial display of variables being picked by intellisense. I am working in VS2013 environment. I have a project, in the project Settings file I created string variables of about 100 to be accessed across the files for the project, like this:
A example of thew variable it worked for
public static String TradeportAccordionSystemAdminInstitutionManagement = Settings.Default.[b]TradeportAccordionSystemAdminInstitutionManagement[/b];
An example of the variable it did not work for
public static String TradeportAccordionSystemAdminInstitution = Settings.Default.
So, does it mean that the Settings file has a limit of variables that should be declared in it?
I was attempting something weired with address to move data around when I discovered that the size of the array is not what I expected. I am passing this structure as &Users to a function that declares it as a void *, then I can deal with chunks of data (memmove) and not have to worry about index or things like that. However...sizeof is returning something I do not understand.
I am trying to write a structure to a file. Example say the structure has two variables x and y . I want to write a function which modifies these variables and stores the modified version on a file. Such that next time I call the function . it has the values from the previous write. Here's an example of my code .
// do some calculations. fwrite(mystruct, sizeof(MYSTRUCT), 1, fp); fclose(fp)
//return some value }
The problem is that each time I run the program it shows the initialized value of the variables and not the value from last write. I guess the write isn't successful because when I open in w+ mode. i get the error file could not be opened and then i have to delete the file and re create it....