2016-12-04 3 views
0

Я хочу написать программу, которая должна получить ввод в виде строки, , и этот ввод сохранит в динамическом массиве, поэтому я использую malloc с размером 20 * sizeof, и хочу, чтобы размер строки был длиннее чем выделение памяти, улучшите ее размер. Но я получаю крах и не могу улучшить его размер с помощью realloc.Как я могу realloc динамический массив после возвращения null malloc в c?

Что я могу сделать?

это мой код:

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

int main() { 

    char *user; 
    int n = 0; 
    user = (char*)malloc(20*sizeof(char)); 
    scanf("%s",user); 
    n = strlen(user); 
    user = (char*)realloc(user,n); 

    return 0; 
} 

ответ

0

Самый простой способ заключается в использовании модификатора m в зсапЕ:

char *user = 0; 
scanf("%ms", &user); 
// use 'user' -- will be null if there was an error reading. 

К сожалению, это доступно только на системах POSIX. В других системах вам нужно будет написать свои собственные символы чтения цикла с помощью getchar и перераспределить по мере чтения (при необходимости).

 Смежные вопросы

  • Нет связанных вопросов^_^