繁体   English   中英

使用指针读取字符 arrays

[英]Reading char arrays using pointers

我正在尝试从键盘读取一些char arrays ,但每次程序崩溃时。

我想知道如何从键盘舒适地输入和存储char arrays。

int main()
{

    int i;
    char *days[7];

    for(i=0;i<7;i++)
    {
        scanf("%s", days[i]);
    }


    for(i=0;i<7;i++)
    {
        printf("%s\n", days[i]);
    }


    return 0;
}

char *days[7]声明一个指针数组。 除非使用有效地址初始化,否则它们指向无效的 memory 位置。 因此,当您想写信给它们时,它们会调用未定义的行为。

在使用它们之前,您需要确保它们指向有效的 memory(位置)。

Yuo 声明了一个指向char的指针,但这些指针不引用有效的 memory。

您需要为他们分配 memory :

int main(void)
    int i;
    char *days[7];

    for(i=0;i<7;i++)
    {
        days[i] = malloc(MAXLENGTH);
        scanf("%15s", days[i]);
    }

    for(i=0;i<7;i++)
    {
        printf("%s\n", days[i]);
        free(days[i]);
    }

    return 0;
}

或者你可以

int main(void)
{

    int i;
    char days[7][MAXLENGTH];

    for(i=0;i<7;i++)
    {
        scanf("%15s", days[i]);
    }

    for(i=0;i<7;i++)
    {
        printf("%s\n", days[i]);
    }

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM