如何打印出atoi值

时间:2019-07-18 01:00:16

标签: c

我尝试从C编程语言中显示的函数中打印出atoi值,但是我发现以前的main格式无法打印出atoi值。

以前,我以这种格式用C编写了htoi,但是这次不起作用。代码如下所示:

#include <stdio.h>
#include <ctype.h>

#define MAXLINE 1000

int get_line(char line[], int maxline);
int atoi(char s[]);                                                                                                                                                                                                  

int main(void)
{
    int len;
    char line[MAXLINE];

    while ((len = get_line(line, MAXLINE)) > 0) {
        atoi(line);
        printf("%s", line);
    }
    return 0;
}

int get_line(char s[], int lim)
{
    int c, i;

    for (i = 0; i < lim-1 && (c=getchar()) != EOF && c != '\n'; ++i)
        s[i] = c;
    if (c == '\n') {
        s[i] = c;
        ++i;
    }
    s[i] = '\0';
    return i;
}

int atoi(char s[])
{
    int i, n, sign;

    for (i = 0; isspace(s[i]); i++)
        ;
    sign = (s[i] == '-') ? -1 : 1;
    if (s[i] == '+' || s[i] == '-')
        i++;
    for (n = 0; isdigit(s[i]); i++)
        n = 10 * n + (s[i] - '0');

    return sign * n;
}

它复制用户的输入,而不是打印出atoi转换的int值,这不是我想要的结果。

2 个答案:

答案 0 :(得分:1)

您需要将atoi()的结果分配给变量并打印。

    while ((len = get_line(line, MAXLINE)) > 0) {
        int num = atoi(line);
        printf("%d\n", num);
    }

答案 1 :(得分:1)

正如您在代码中编写的那样,atoi返回一个int。到那时,您有两种解决方案: 一种 。您将返回的值存储在变量中,然后进行打印。 B.您可以使用

打印而不存储它
printf("%d",atoi(string));

注意:如果您不知道它的存在,则stdlib.h中已经有一个函数atoi()。