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 #9
Difficulty: Easy
A CD-ROM is a type of optical disc that originated in 1982 in South Korea.
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