使用后清理静态字符数组

Cleaning a static char array after use

我希望我的程序为新输入清理静态字符数组我已经尝试使用 memset 但它不起作用或者我做错了。请一些建议。提前致谢。

const char * password() {
     static int i = 0;
     static char pwd[STRING_LEN], c = '[=10=]';
     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] = '[=10=]';

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

此外,不需要 "clean" 数组,因为您正在用 getch()'[=11=]' 的结果覆盖它们的内容...您永远不会重置 i.

i 是一个静态的 int,它只会在第一次被初始化,执行通过它的定义点。此外,ipwd 不需要是静态变量。