小编Say*_*man的帖子

一个在c中使用动态内存分配的程序

我正在做一个程序,这里用户将输入一个字符串,如果用户输入“END”则程序将终止,否则它会要求另一个字符串和另一个但是字符串的大小是未知的,所以我必须使用动态内存分配以获取未知大小的字符串 这是我尝试过的

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

int main() 
{
    bool on = true;
    char *string;
    while(on)
    {
        string = malloc(sizeof(char));
        int i;
        for (i = 0;; i++)
        {
            int n;
            n = getchar();
            if (n == '\n')
            {
                break;
            }
            else
            {
                string = realloc(string, sizeof(char));
                string[i] = (char)n;
            }
        }
        string[i] = '\0';
        if (strcmp(string, "END") == 0)
        {
            on = false;
        }
        printf("Len: [%i],String = %s\n",i+1,string);
        free(string);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是如果我输入一个超过 25 左右的字符串,程序就会崩溃,它给了我这个 …

c input dynamic-memory-allocation

1
推荐指数
1
解决办法
76
查看次数

标签 统计

c ×1

dynamic-memory-allocation ×1

input ×1