C:变量变为0只需在for循环中调用getline

时间:2015-05-06 10:44:10

标签: c variables for-loop static getline

在下面的代码(我的源代码的简化版本)中,在声明时正确初始化为lv的变量1getline内被调用时神秘地变为0 {1}}循环。如果您输入for之外的任何内容,或通过gdb输入,则可以从printf注意到它。变量在"cl"调用后立即更改值。 最奇怪的是,在提示时输入getline时,您可能会通过gdb看到"cl"的值在lv之后变为0,然后才能正确设置到getline语句中的3,然后保留用于后续循环,无论你输入什么。

此外,如果您将声明更改为if,则预期的行为会出现(static int lv = 1;保持lv直到'手动'更改为止。

有人可以告诉我到底是怎么回事?

1

2 个答案:

答案 0 :(得分:9)

合理的解释是,您的平台function pulseEff() { $('.DivBorder').delay(1000) .animate({ 'border-color': 'transparent' }, 600).delay(1000) .animate({ 'border-color': '#333' }, 600); }; var Interval; $('#start').click(function () { Interval = setInterval(pulseEff, 600); }); 大于size_t

如果是这种情况,则代码中包含UB,int更新lvgetline变量会被覆盖。

只需将len声明为len

答案 1 :(得分:0)

编译器列出的一个问题是getline()(在Linux上)不是stdio.h中的原型,除非这样编写:

   #define _GNU_SOURCE
   #include <stdio.h>
   #include <stdlib.h>

编译器还提出了另外两个关于未使用参数的警告&#39; argc&#39;和&#39; argv&#39;建议将主要功能声明更改为:

int main( void )