基本要点是,我正在从文本文件中读取单词,将它们存储为字符串,运行一个函数,然后循环多次,每读取一个新行就重写该字符串。这个循环完成后,我需要处理一个不同的字符串。问题是,第二个字符串的字节,即使我在声明时将它们设置为 0,也会被比我分配给第一个字符串的空间长的单词中的额外字母覆盖:
char* currDictWord = malloc(9*(sizeof(char));
char* currBrutWord = malloc(9*(sizeof(char));
memset(currBrutWord, 0, 9);
memset(currDictWord, 0, 9);
...
while (stuff) {
fscanf(dictionary, "%s", currDictWord);
}
...
printf("word: %s\n", currBrutWord);
currBrutWord 将不再为空。我处理此问题的两种方法是确保 currDictWord 比字典文件中最长的单词长(一种贫民窟解决方案),并在循环后对 currBrutWord 执行新的 memset。有没有办法告诉 C 停止将内容写入我专门为不同变量分配的内存中?