使用后清理静态字符数组
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
,它只会在第一次被初始化,执行通过它的定义点。此外,i
和 pwd
不需要是静态变量。
我希望我的程序为新输入清理静态字符数组我已经尝试使用 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
,它只会在第一次被初始化,执行通过它的定义点。此外,i
和 pwd
不需要是静态变量。