|
|
|
|
April 5th, 2004, 06:52 AM
|
|
Shrapnel Fanatic
|
|
Join Date: Jul 2001
Location: Southern CA, USA
Posts: 18,394
Thanks: 0
Thanked 12 Times in 10 Posts
|
|
Coding Inquiry
So I am writing this program to generate HTML files from a Components.txt file (have to do something during a quarter with no computer science classes ), and I have run into a problem. I can not seem to find any way to get ofstreams to accept strings as their filename, only arrays of characters. This sucks, as I can't make an array of characters with a dynamic size. I want to have separate HTML files for each General Group. Everything is working great except for the naming issue. Any group with a space generates gobbley-gook character arrays, even when I have a special case for spaces being turned into underscores. Also, it inserts a bunch of what I can only assume are null characters at the _beginning_ of the char array, rather than the end... :-\ Since I plan on releasing this open-sourced anyways, please take a look at the current freeze of the source code. The offending code starts with this line (can't get the line number, as on a crappy Dell comp atm...):
code:
while (generalGroupVector.size() > 0)
|
April 5th, 2004, 07:56 AM
|
|
Major General
|
|
Join Date: May 2002
Location: Linghem, �sterg�tland, Sweden
Posts: 2,255
Thanks: 0
Thanked 0 Times in 0 Posts
|
|
Re: Coding Inquiry
Sorry, don't have any C program, only does Delphi.
|
April 5th, 2004, 10:39 AM
|
|
Major General
|
|
Join Date: Oct 2002
Posts: 2,174
Thanks: 0
Thanked 0 Times in 0 Posts
|
|
Re: Coding Inquiry
Just at a glance, I suspect your problem is the various incarnations of
code:
for(int i = 0; i < BUFFER_SIZE; i++)
{
buffer[i] ='\n';
]
for clearing out your strings; if this is it, then the problem would be that "standard" strings are terminated with a 0 in c, not with the newline character (this may vary by OS, if the one you are used to working in uses a 0 for the newline character). Your internal representation of strings appears to use the newline character for terminating, but then you turn around and use standard routines for output - the standard routines output the newline, don't see a 0, and so keep going through memory, spouting whatever happens to be there, until they do hit a 0. The suggested fix, bearing in mind that the possibility exists that this isn't actually the problem; I don't have great experiece with c, would be to change the various incarnations of the above to
code:
for(int i = 0; i < BUFFER_SIZE; i++)
{
buffer[i] = 0; /* yes, c does allow you to give a character a numeric value */
]
and then have the newline character tacked on in your output routines.
Edit:
Also, c strings *are* character arrays already; further, you may want to go through and set it up to destroy some of those dynamic variables you keep allocationg
[ April 05, 2004, 09:41: Message edited by: Jack Simth ]
__________________
Of course, by the time I finish this post, it will already be obsolete. C'est la vie.
|
April 5th, 2004, 12:56 PM
|
|
Shrapnel Fanatic
|
|
Join Date: Dec 2000
Location: USA
Posts: 15,630
Thanks: 0
Thanked 30 Times in 18 Posts
|
|
Re: Coding Inquiry
If you want to write a program, write one that automatically breaks the files down into easy to follow and PRINTABLE tech trees for use with mods.
__________________
Creator of the Star Trek Mod - AST Mod - 78 Ship Sets - Conquest Mod - Atrocities Star Wars Mod - Galaxy Reborn Mod - and Subterfuge Mod.
|
April 5th, 2004, 08:26 PM
|
|
Shrapnel Fanatic
|
|
Join Date: Jul 2001
Location: Southern CA, USA
Posts: 18,394
Thanks: 0
Thanked 12 Times in 10 Posts
|
|
Re: Coding Inquiry
Setting the characters to be newline characters is not used on any of the strings where this problem occurs. Earlier when reading in the components, I use the newline character because I want lines read in that are just newlines (blank lines) to be skipped. If getting a line results in the string being just a newline, it gets skipped. I don't think this has anything to do with having lots of stuff appended to the beginning of the char arrays in this section, as I do not reference this function, nor the buffer string.
I am well aware that strings are just arrays of characters, but the ofstream class is unfortunately not aware of this. :-\
|
April 5th, 2004, 08:26 PM
|
|
Shrapnel Fanatic
|
|
Join Date: Jul 2001
Location: Southern CA, USA
Posts: 18,394
Thanks: 0
Thanked 12 Times in 10 Posts
|
|
Re: Coding Inquiry
Quote:
Originally posted by Atrocities:
If you want to write a program, write one that automatically breaks the files down into easy to follow and PRINTABLE tech trees for use with mods.
|
That would be rather hard to do... if each tech only had one level, it would be easy. But with lots of levels, it becomes messey... :-\
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is On
|
|
|
|
|