为什么我无法在代码中更改虚拟变量?

时间:2014-06-06 09:11:06

标签: c

好的,这是我尝试编写的一些简单的过程代码,用于实现atoi函数的功能。困扰我的是我无法更改dummy块中的if变量,而我可以更改n变量。ndummy在同一范围内定义。

int main()
{

    char *s;

    puts("Enter a string");
    fgets(s,100,stdin);
    int n = 0 , dummy = 1; // both are defined in the same scope 

    for(int i = 0 ; i < 2 ; i++ )
    {
        if(isdigit( s[i] ))    { n = n*10 + (s[i] - '0'); }

        if(1)
        {
            dummy = dummy + 99; // This is the thing not working , program stops executing
            // n = n + 99;  while this works fine
            printf("%d\n", dummy );
        }
    }
    printf("%d", n);
}

我可以打印dummy变量罚款,但我无法为其分配值,当我尝试执行该程序时,程序停止工作。如果我评论涉及dummy的行并取消注释以下内容使用n行,程序运行正常。

不要弄乱逻辑。那么发生了什么?

2 个答案:

答案 0 :(得分:5)

char *s;

s需要分配静态动态

的内存
char s[100];

char *s = NULL;
s = malloc(100);
if (s)
    /* do operations with s */
.
.
if (s)
    free(s);

答案 1 :(得分:0)

我在分配dummy变量时没有看到任何问题,但在分配变量s

方面存在问题
s = malloc (256);

...
...

if(s)
free(s)