好的,这是我尝试编写的一些简单的过程代码,用于实现atoi
函数的功能。困扰我的是我无法更改dummy
块中的if
变量,而我可以更改n
变量。n
和dummy
在同一范围内定义。
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
行,程序运行正常。
答案 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)