Очистка массива статических символов после использования - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу, чтобы моя программа очищала массив статических символов для нового ввода, которое я пробовал с помощью memset, но оно не работает, или я делаю это неправильно.пожалуйста, несколько советов.Заранее спасибо.

const char * password() {
     static int i = 0;
     static char pwd[STRING_LEN], c = '\0';
     static char return_buffer[255];

     memset(pwd, 0, sizeof pwd);     //<---
     memset(return_buffer, 0, sizeof return_buffer);     //<--

     printf("Password: ");
     while (i < STRING_LEN){
         pwd[i] = getch();
         c = pwd[i];
         if(c == 13) { break; }
         i++;
     }
     pwd[i] = '\0';

     snprintf(return_buffer, sizeof(return_buffer), "%s", pwd);
     printf("\n");
     return return_buffer;
}

1 Ответ

0 голосов
/ 12 ноября 2018

Кроме того, нет необходимости «чистить» массивы, поскольку вы перезаписываете их содержимое с результатом getch() и '\0' ... вы никогда не сбрасываете i.

i - это статический int, который инициализируется только в первый раз, выполнение проходит свою точку определения.Также нет необходимости для i и pwd быть статическими переменными.

...