C:fscanf 删除整数变量值?

标签 c scanf

我有一个 C 程序,当我进入 while 循环时遇到错误。

我初始化一个变量(fragmentcount)并使用 fscanf 写入它并为其分配值 4(这有效)

int fragmentCount;
if ((fscanf(fp, "%i", &fragmentCount)) == 1) {
   ...
}

但是,当我尝试在下面的 while 循环中访问它时,fragmentCount = 0

while ((fscanf(fp, "%[#]", discards)) != EOF) {
   printf(fragmentCount); // <- pseudocode
}

为了进行一个简短的实验,我尝试去掉 fscanf 作为 while 循环的条件测试,并且fragmentCount 是正确的值 (4)。

为什么会这样呢?我怎样才能避免这种情况?

最佳答案

如何声明discards? fscanf 读取的数据可能超出了 discards 的空间,这可能会覆盖其他变量的值。

使用不带字段宽度的“%[”格式是一个坏主意 - 它 leaves your program open to buffer overflow errors .

关于C:fscanf 删除整数变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869491/

相关文章:

c - 如何在linux中找到要包含在库函数中的头文件

c - 在 C 代码中提取字符串的正则表达式(不在注释内)

在 C 中通过混合 char[] 和 int 创建字符串

c - 第二个 scanf 不会运行,程序刚刚终止。 C

c - 在 C 文件中读取 : how do execute fgets on a same file multiple times?

c - 读取某些值并按 Enter 键时 fgets 发生冲突

c - 使 `gcc' 需要 : *** No rule to make target `libmy.so' , 。停止

c - Fscanf 里面一直崩溃?

c - printf 和 scanf 的逻辑问题

c - scanf() 将换行符保留在缓冲区中