atoi函数从缓冲区添加数字

奥赞(Ozan Polatbilek)

我试图在空白之间取2个整数(小于40000)1232 11232,然后将其解析为整数。如您所知,getfirstnum返回第一个数字。但是问题在于,有些不寻常的事情我无法理解。当我输入11232 22312为输入时,输出必须相同,11232 22312必须相同2231211232 223121232它基本上将第二个数字放在第一个数字的前面,将两个数字连接起来,在第二个数字中将最后四个数字连接起来。为什么以及如何解决呢?

PS:我用正则表达式输入以空格输入(空格是问题scanf),它显然有效,我检查了很多次。问题开始于atoi在正确atoi解析字符串之前

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int getfirstnum(char *input);
int getsecnum(char *input);

int main() {
    char *input = malloc(40005 * sizeof(char));
    int N, target, i = 0, j = 0, x, y, shot = 0, found = 0;

    scanf(" %[^\n]s", input);

    N = getfirstnum(input);
    target = getsecnum(input);

    printf("%d %d", N, target);
}

int getfirstnum(char *input) {
    int numm, i = 0;
    char num1[40005];

    while (input[i] != ' ') {
        num1[i] = input[i];
        i++;
    }
    fflush(stdout);
    numm = atoi(num1);
    return numm;
}

int getsecnum(char *input) {
    int num, i = 0, j = 0;
    char num2[40005];

    while (input[i] != ' ')
        i++;

    i++;

    while (i < strlen(input)) {
        num2[j] = input[i];
        printf("%c", sayi2[j]);
        i++;
        j++;
    }
    num = atoi(num2);

    return num;
}
chqrlie

您的代码显示数字值和位数之间的主要混淆。您的代码失败,因为在从源中复制数字后,您不可以将终止缓冲区的值设置为null。但是您的代码对于此任务而言太复杂了:使用sscanf()可以轻松完成数字解析strtol()您只需要一个缓冲区即可读取一行:

#include <stdio.h>

int main() {
    char line[256];
    int N, target;

    if (fgets(line, sizeof line, stdin)) {
        if (sscanf(line, "%d%d", &N, &target) == 2) {
            printf("%d %d\n", N, target);
        }
    }
    return 0;
}

或使用strtol

#include <stdio.h>
#include <stdlib.h>

int main() {
    char line[256];
    int N, target;
    char *p, *q;

    if (fgets(line, sizeof line, stdin)) {
        N = strtol(line, &p, 10);
        target = strtol(p, &p, 10);
        if (p > line && q > p)
            printf("%d %d\n", N, target);
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ReadAsync从缓冲区获取数据

来自分类Dev

Python从缓冲区读取数据

来自分类Dev

从缓冲区读取Python 2.6

来自分类Dev

从缓冲区读取器输入字符串时的 Java 数字异常

来自分类Dev

返回从缓冲区和函数读取的字符串而没有动态分配?

来自分类Dev

谷歌大查询 - 从缓冲区刷新数据(缓冲区上的 4 天数据)

来自分类Dev

Python:从缓冲区播放视频文件

来自分类Dev

python lxml:从缓冲区导入XSD?

来自分类Dev

从缓冲区创建的NSData创建UIImage返回nil?

来自分类Dev

从缓冲区创建QImage,没有深层副本?

来自分类Dev

Android AudioRecord / AudioTrack:从缓冲区播放录音

来自分类Dev

getHistoryForKey()Hyperledger结构从缓冲区nodejs获取事务

来自分类Dev

ruby IO.gets是否从缓冲区读取?

来自分类Dev

如何从缓冲区返回文件流?

来自分类Dev

JS从缓冲区读取字节

来自分类Dev

从缓冲区的开头删除一行

来自分类Dev

从缓冲区和位置绘制像素(glDrawPixels)

来自分类Dev

在套接字编程中从缓冲区接收数据

来自分类Dev

从缓冲区中提取字符串

来自分类Dev

如何使QAudioOutput对象从缓冲区播放?

来自分类Dev

从缓冲区加载HICON(*。ico文件)

来自分类Dev

节点红色。从缓冲区中提取字节

来自分类Dev

Web API 从缓冲区流式传输图像

来自分类Dev

从缓冲区读取 csv 文件得到了 EmptyDataError?

来自分类Dev

3位数字的缓冲区

来自分类Dev

如何将o / p存储到缓冲区,然后从缓冲区存储到文件

来自分类Dev

C函数,打印到缓冲区

来自分类Dev

递归函数中的缓冲区溢出

来自分类Dev

缓冲区溢出 c(获取函数)