在C中清空char字符串的最佳方法是什么?

Ali*_*Ali 0 c string

嗨,我有一个字符串

name[50] = "I love programming"

在我调用另一个函数之前我想要清空这个字符串,以便我可以在同一个数组中存储一些东西

这会有用吗?

name[0] = '\0';

或者有没有在没有创建任何新功能或使用任何其他库的情况下清空字符串?

Dia*_*cus 5

将第一个char设置为nul是完全可以接受的.但是如果该字符串在安全性方面很敏感,那么你应该将其归零memset.

编辑:

来自Matteo Italia的回答让我对这个问题有了更深入的了解.根据这个文档(和Matteos的答案)memset可以进行优化,因此不是从内存中删除敏感信息的最佳选择.该文档有几个选项,但它们都不是便携和可靠的,因此它提出了新功能标准,memset_s仅用于此目的.此功能尚不存在,因此我们目前仍处于非便携(SecureZeroMemory),非可靠(volatile技巧)或非最佳选项(secure_memset示例).