473,385 Members | 1,351 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

NULL struct at end of declared array of structs

I have an array of structs which I will be going through one-by-one to search for a matching value. This array might have elements added and removed later, so I don't want to have to update a defined size for the array. What I'd like to do is put a NULL struct at the end so that the end can be detected.

Here's some code:

Expand|Select|Wrap|Line Numbers
  1. typedef struct smfMolTrans {
  2.   char molecule[SZFITSCARD]; /* molecule species */
  3.   char transiti[SZFITSCARD]; /* transition */
  4.   double freq;               /* frequency of transition */
  5. } molTrans;
  7. static molTrans *transitions[] = {
  8. {"SO", "4 5 - 3 4", 178605.403000},
  9. {"CH", "2 -1 3 3 - 2 1 2 2", 178875.247400},
  10. {"SiCC", "8 0 8 - 7 0 7", 179446.496000},
  11. /*.... a bunch more....*/
  12. };
Then later I want to be able to do something like
Expand|Select|Wrap|Line Numbers
  1. while ( transitions[i] != NULL ) {
  2. /* check to see if the frequency matches, do some stuff... */
  3. }
Basically I need to be able to know when to quit searching through the array. When I try putting a NULL at the end of the array:

Expand|Select|Wrap|Line Numbers
  1. static molTrans transitions[] = {
  2. {"SO", "4 5 - 3 4", 178605.403000},
  3. {"CH", "2 -1 3 3 - 2 1 2 2", 178875.247400},
  4. {"SiCC", "8 0 8 - 7 0 7", 179446.496000},
  5. /*.... a bunch more....*/
  6. NULL
  7. };
I get "warning: initialization makes integer from pointer without a cast" (for the initialization of the array) and "error: invalid operands to binary !=" (for the while loop).

Mar 31 '08 #1
2 4427
849 Expert 512MB
One solution is to create a set of values (maybe "", "", and 0) and treat that as your NULL struct. Another is to use a linked list of structs rather than an array. You'd (probably) need another struct that has a moltrans as its data member, along with a pointer to the next node in the list.
Mar 31 '08 #2
9,208 Expert Mod 8TB
This array might have elements added and removed later, so I don't want to have to update a defined size for the array.
By definition an array has a fixed size.

That means you have a variable for the number of elements. Use that variable to know when you are at the end of the array.

Only a char array with a NULL gets special treatment as a "string".

Are you using C++? You don't say, but if you are, the vector implements an elastic array that expands and contracts.

Also, instead of an array, could you use a double-linked list?
Mar 31 '08 #3

Sign in to post your reply or Sign up for a free account.

Similar topics

by: sathyashrayan | last post by:
The standard confirms that the following initialization of a struct struct node { --- --- } struct node var = {NULL};
by: anonymous | last post by:
I have a Lex file containing definitions of 2 structures like: %{ struct a {...}; struct b { struct a i; ... }; struct a x;
by: S.Tobias | last post by:
I'm trying to understand how structure type completion works. # A structure or union type of unknown # content (as described in is an incomplete type. It # is ...
by: Chua Wen Ching | last post by:
Hi there, I am very curious on this code: // declared as structure public struct Overlapped { public IntPtr intrnal; public IntPtr internalHigh;
by: thomson | last post by:
Hi all, Would you please explain me where will be the heap stored if it is declared inside the Class, As class is a reference type, so it gets stored on the heap, but struct is a value...
by: DaHool | last post by:
Hi there !!! I browsed around the Internet in search for a solution of a little difficult problem i have in VB.NET.... However, i cannot find a suitable anwser anywhere, so i thought i'll give...
by: arnuld | last post by:
this one was much easier and works fine. as usual, i put code here for any further comments/views/advice: --------- PROGRAMME ------------ /* Stroustrup: 5.9 exercise 7 STATEMENTS: Define a...
by: AM | last post by:
Hi, I have a C++ Dll that has a function that is being exported as shown below extern "C" __declspec(dllexport) validationResult __stdcall _validateData(double dataToMat, int time); A...
by: Milux | last post by:
Hi All, This question has to do with interface design. Suppose I have an translation tool. It can translates structs from type "general" to other types and then does some processing. Example:...
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.