第一指数中的元素不像其余的那样

时间:2017-05-13 18:30:50

标签: c string

所以我正在尝试做一个非常简单的任务。我需要编写一个函数来获取一个空的字符串数组及其大小并初始化它(例如“names = {”dani“,”gabi“,”bobi“},names是3的数组,每个都有一个用户输入的字符串。所以首先用户需要放大小然后我分配数组,然后我尝试为每个不同地址的数组获取字符串。

现在由于某种原因,除了第一个索引(arr [0])中的那个之外,它对数组的其余部分很有用。我理解,因为“ENTER”是一个char,它获取第一个字符串(当用户输入大小时)

但我不希望它像这样,我试图解决它几个小时而且我没希望了

#define _CRT_SECURE_NO_WARNINGS#define SIZE 21
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


enum { FAIL = 0, SUCCESS = 1 };


int init_arr(char ***arr, int *size);


int main()
{
    int i, sizes = 0;
    char **course = NULL;


    init_arr(&course, &sizes);


    for (i = 0; i< sizes; i++)
        puts(course[i]);


    free(course);
    return 0;
}


int init_arr(char ***arr, int *size)
{
    int i;
    char* c;


    printf("Enter the Number of--->:");
    scanf("%d", size);


    *arr = (char**)malloc((*size) * sizeof(char*));
    if ((*arr) == NULL)
    {
        printf("Error");
        return FAIL;
    }


    for (i = 0; i < (*size); i++)
    {
        c = (char*)calloc(SIZE, sizeof(char));
        if (c == NULL)
        {
            printf("Error");
            return FAIL;
        }
        printf("Enter Name %d-->:", i);

        fgets(c, SIZE, stdin);


        (*arr)[i] = c;
    }

    return SUCCESS;
}

1 个答案:

答案 0 :(得分:2)

getchar();将完成这项工作:

printf("Enter the Number of--->:");
scanf("%d", size);
getchar(); // to read newline character