C -转换ASCII到整数



我已经知道如何转换,但是"while"并没有停止,它一遍又一遍地运行。我不知道为什么?是"string !=''"不工作?字符总是以''结尾吗?

#include <stdio.h>
   int ascii_integer(char *string){
   int result = 0;
  while (string !='')
  {
     if (*string >='0' && *string <='9')
     {
        result *= 10;
        result += *string - '0';
     }
     string++;
  }
  return result;
}
int main(){
  char string[] = "12345";
  int result = ascii_integer(string);
  printf("%dn",result);
}

while (string !='')
应该

while (*string)

我很惊讶你没有得到一个警告从编译器

该错误是将指针与零进行比较,而不是取消引用并将字符与零进行比较。在我看来,如果选择更好的变量名和更好的循环结构,就不太可能犯这个错误。下面是我编写代码的方法。我喜欢短。

// my preference
int ascii_integer(char *pstring) {
  int result = 0;
  for ( ; *pstring != NULL; ++pstring) {
    if (*pstring >= '0' && *pstring <= '9')
      result = result * 10 + *pstring - '0';
  }
  return result;
}

行While (string !='')应该是而(*字符串! = ' 0 ')或而(*字符串)

当你输入:

while(string != '')

''为NULL, ascii值为0的符号,您将字符串(指针)比较为NULL。它不是NULL,它指向某个内容,我猜是一个字符串。你应该把它改成:

while(*string != '')

,而该字符串指针的CONTENT (*)不为零,快捷方式:

while(*string)

表示-,而*string为TRUE。

相关内容

  • 没有找到相关文章

最新更新