Visit Our UNIX and Linux User Community


String array iteration causing segfault


 
Thread Tools Search this Thread
Top Forums Programming String array iteration causing segfault
# 1  
Old 08-27-2013
String array iteration causing segfault

I am populating an array of string and print it.
But it going in infinite loop and causing segfault.

Code:
char Name[][50] = {
                "yahoo",
                "rediff",
                "facebook",
                NULL
                };

main(int argc, char* argv[])
{
    int j = 0;

    while(Name[j] != NULL)
    {
            printf("j = %d    Name = %s    len = %d\n", j, Name[j], strlen(Name[j]));
            j++;
    }

    return(0);

}

output is
Code:
j = 0   Name = yahoo     len = 5
j = 1   Name = rediff len = 6
j = 2   Name = facebook       len = 8
j = 3   Name =     len = 0
j = 4   Name =     len = 0
j = 5   Name =     len = 0
j = 6   Name =     len = 0
j = 7   Name =     len = 0
j = 8   Name =    len = 0
j = 9   Name =    len = 0
.
.
.
12976 Segmentation fault      ./test_code

What is wrong with the code?

Last edited by rupeshkp728; 08-27-2013 at 04:05 PM.. Reason: corrections
# 2  
Old 08-27-2013
You made it an array of arrays, guaranteeing it will never be NULL. array[j] just calculates array + (j*50), which isn't going to be zero.

If you want to store a null pointer, you'll have to store pointers. Then you get address stored at (base_address + j) which is quite capable of being NULL.

Code:
char *strings[]={
                "yahoo",
                "rediff",
                "facebook",
                NULL };

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 08-27-2013
Thanks coronna for the reply.
Using while(Name[j][0] != NULL) solved my problem.
# 4  
Old 08-27-2013
That means you cannot store an empty string in your array though -- it will be the same as NULL, i.e. first character holding a zero.
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 08-27-2013
yes it seems so and so inspite of being zero loop went infinetely.
# 6  
Old 08-27-2013
I don't understand your question or statement.
# 7  
Old 08-27-2013
I meant whatever you said in your second comment was correct and so inspite of being zero loop went infinetely.

Previous Thread | Next Thread
Test Your Knowledge in Computers #470
Difficulty: Medium
As of December 2018 the NTP pool consisted of around 7,700 active time servers on IPv4.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk Associative Array and/or Referring to Field by String (Nonconstant String Value)

I will start with an example of what I'm trying to do and then describe how I am approaching the issue. File PS028,005 Lexeme HRS # M # PhraseType 1(1:1) 7(7) PhraseLab 501 503 ClauseType ZYq0 PS028,005 Lexeme W # L> # BNH # M #... (17 Replies)
Discussion started by: jvoot
17 Replies

2. Programming

Segfault When Parsing Delimiters In C

Another project, another bump in the road and another chance to learn. I've been trying to open gzipped files and parse data from them and hit a snag. I have data in gzips with a place followed by an ip or ip range sort of like this: Some place:x.x.x.x-x.x.x.x I was able to modify some code... (6 Replies)
Discussion started by: Azrael
6 Replies

3. Shell Programming and Scripting

While loop is causing ssh command to exit from script after first iteration.

I am trying to check multiple server's "uptime" in a loop over "ssh". When I execute multiple ssh commands with hard coded servernames script is executing fine. But when I pass server names using while loop, script is exiting after checking first server's status, why? # serverList... (8 Replies)
Discussion started by: kchinnam
8 Replies

4. Homework & Coursework Questions

passing letters from an array into a string for string comparison

attempting the hangman program. This was an optional assignment from the professor. I have completed the logical coding, debugging now. ##I have an array $wordString that initializes to a string of dashes ##reflecting the number of letters in $theWord ##every time the user enters a (valid)... (5 Replies)
Discussion started by: lotsofideas
5 Replies

5. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

6. Programming

segfault in pointer to string program

hello all, my question is not about How code can be rewritten, i just wanna know even though i am not using read only memory of C (i have declared str) why this function gives me segfault :wall:and the other code executes comfortably though both code uses same pointer arithmetic. ... (4 Replies)
Discussion started by: zius_oram
4 Replies

7. Programming

Is Drive Valid Segfault

I have a program that allows users to specify the debug log file location and name. I have tried using the access() and stat() but they both segfault if the drive say (d:\) is invalid. Both seem to be fine if the drive exists. Could someone please point me in the direction to a function that... (1 Reply)
Discussion started by: robfwauk
1 Replies

8. Shell Programming and Scripting

ITERATION: remove row based on string value

It is my first post, hoping to get help from the forum. In a directory, I have 5000 multiple files that contains around 4000 rows with 10 columns in each file containing a unique string 'AT' located at 4th column. OM 3328 O BT 268 5.800 7.500 4.700 0.000 ... (9 Replies)
Discussion started by: asanjuan
9 Replies

9. Programming

id3lib SEGFAULT

Hello everyone, I'm writing a program using the id3lib unfortunately I've encountered with memory issue that cause segmentation fault. I tried to rerun and analyze the program with valgrind but it doesn't point me anywhere. I really stuck on this one. Valgrind output: ==14716== Invalid read of... (2 Replies)
Discussion started by: errb
2 Replies

10. UNIX for Dummies Questions & Answers

[Linux] How Do I Run Until Segfault

Hello, sorry if this has been posted before but i was wondering if there is a way to run a program until a segmentation fault is found. Currently i'm using a simple shell script which runs my program 100 times, sleeps 1 second because srand(time(0)) is dependent on seconds. Is there a possible... (1 Reply)
Discussion started by: aslambilal
1 Replies

Featured Tech Videos