Creating an atoi function

后端 未结 5 1647
感情败类
感情败类 2021-01-19 04:03

I\'m attempting to create my own atoi function. With the following I\'m getting a return value of 0. Whatever I change the number variable within the function is what I get

5条回答
  •  -上瘾入骨i
    2021-01-19 04:35

    1. You're declaring an array of char *, that is, an array of strings, rather than a single string. You probably want:

      char number[MAXSIZE];
      
    2. Your scanf format string is wrong. If you want to read a string, you should use %s. %c reads only a single character.

    3. Your scanf parameter is wrong - pass number itself (or &number[0] if you prefer), not &number.

    4. The parameter you're passing to atoi_me is wrong. Call it with number (or equivalently &number[0]), not *number.

    Putting all of that together, you should have a main routine something like this:

    int main(void)
    {
        char number[MAXSIZE];
        int num;
        printf("Please enter a number: ");
        scanf("%s", number);
        num = atoi_me(number);
        printf("%d\n", num);
        return 0;
    } 
    

    Editorial notes: You have a potential buffer overflow with the scanf line. You'd be better off using a function like fgets(3) that makes it easy to protect against that kind of problem.

    atoi(3) also traditionally supports negative numbers (with a leading -) and an optional leading + for positive numbers, which your implementation doesn't handle.

提交回复
热议问题