i am starting to learn C and I have ran into the problem of adding a string input to a 2D array, i am able to get the string input correctly but when i try and add the string element to the array it is not working as expected.When printing the array(which is how i test the program) it will assign each index in the array a single character instead of the entire string.
And here is my code for viewing, thank you very much in advance i appreciate any help that is posted.
#include <stdio.h>
main()
{
    char c_array[3][3];
    int x;
    int y;
    int z=10;
    int i_user_input;
    char c_name[256];
    for(x=0;x<=+2;x++)
    {
        for(y=0;y<=2;y++)
        {
            printf("\nPlease enter a name to the system:");
            scanf(" %s",&c_array[x][y]);
            printf("The string is %s\n",c_name);
            printf("Please press '1' if you would like to keep entering names\n");
            printf("Please press '2' if you would like to print the list of names:");
            scanf("%d",&i_user_input);
            if(i_user_input==1)
                continue;
            if(i_user_input==2)
                for(x=0;x<=2;x++)
                {
                    for(y=0;y<=2;y++)
                    {
                        printf("c_array[%d][%d]=%c\n",x,y,c_array[x][y]);
                    }
                }
        }
    }
}
The output looks as follows with the sample input 'Penelope!'
c_array[0][0]=P
c_array[0][1]=e
c_array[0][2]=n
c_array[1][0]=e
c_array[1][1]=l
c_array[1][2]=o
c_array[2][0]=p
c_array[2][1]=e
c_array[2][2]=!
				
                        
In your code
both the statements are wrong.
%sexpects a pointer to an array, not a singlechar. To scan a singlechar, you need%cformat specifier.c_name, as used in theprintf()is uninitialised. Using uninitialised value invokes undefined behaviour.Solution: To take input element by element, you can do do something like