Question

i have the following problems in C programming.

I have an array of strings stored as words[10][50]. I want to extract each of the string from the array and then pass it on to another function. I tried on the following:

 #include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int Check_Anagram(char*,char*);

void main()
{
    char words[10][20];
    int i;
    int flag;
    for(i=0;i<3;i++)
    {
        scanf("%s\n",words[i][20]);
    }
    for(i=1;i<10;i++)
    {
        flag = Check_Anagram(words[i][20],words[i-1][20]);      
    }
    getch();
}

int Check_Anagram(char *a,char *b)
{
    printf("%s %s\n",a,b);
    return 1;
}

This creates an exception during compiling. Now i think that when i use the "printf" statement then this nomenclature works fine i.i words[i] prints the string "i" from the double dimension words array. When i try to do the same thing with the check function then the error occurs.

Can soemone point me how to do this passing ?

P.S. Please ignore any error in efficiency of program and likewise. I need your help and this is just a test program at learning string passing to a function Thanks

Was it helpful?

Solution

You're passing words[i][20]. You need to pass words[i] instead in both loops. Try this:

for(i = 1; i < 3; i++) /* i < 3 */
{
    flag = Check_Anagram(words[i], words[i-1]);
}

Another problem is that you're reading 3 strings and trying to print 10. So when you pass words[3] it contains garbage: printf tries to print garbage which need not be 0-terminated.

OTHER TIPS

In the first for loop, when i is 0, you're pointing to words[-1], that's your exception.

flag = Check_Anagram(words[i][20],words[i-1][20]);

You are passing the 21st letter of each word the Check_Anagram. Instead you should pass the words themselves:

flag = Check_Anagram(words[i],words[i-1]);

You have a similar problem where you use scanf. To read a line from the console to each word you would use:

for(i=0;i<10;i++)
{
    scanf("%s\n",words[i]);
}
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int Check_Anagram(char [],char []);

void main()
{
    char words[10][20];
    int i;
    int flag;
    for(i=0;i<3;i++)
    {
        scanf("%s\n",words[i]);
    }
    for(i=1;i<10;i++)
    {
        flag = Check_Anagram(words[i],words[i-1]);      
    }
    getch();
}

int Check_Anagram(char a[],char b[])
{
    printf("%s %s\n",a,b);
    return 1;
}

I finally got it corrected thanks to the help of all users. I have posted the corrected code for people who are struggling with passing of string extracted from an array of strings to another function. hope it helps.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top