相关疑难解决方法(0)

解析整数而不在C中附加char

我想解析一个整数,但我的下面的代码也接受像"3b"这样的字符串,它以数字开头,但附加了字符.我如何拒绝这样的字符串?

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

int main(int argc, char *argv[])
{
    int n;
    if(argc==2 && sscanf(argv[1], "%d", &n)==1 && n>0){
        f(n);
        return 0;
    }
    else{
        exit(EXIT_FAILURE);
    }
}
Run Code Online (Sandbox Code Playgroud)

c scanf

6
推荐指数
1
解决办法
96
查看次数

如何使用scanf验证输入

如何使用scanf验证用户输入.现在我有类似的东西,但不起作用.

注意:我有atoi只是为了验证scanf验证是否有效.

scanf("%[0987654321.-]s",buf);

i = atoi(buf);

if(i)
    index = i;
Run Code Online (Sandbox Code Playgroud)

c c++ scanf

5
推荐指数
2
解决办法
2万
查看次数

scanf与%n给出错误的输出

我正在读取一个整数,scanf同时scanf用格式检查读取的数字位数%n,第一个输出始终是正确的,但之后输出增加了一个.这是第二次scanf读取的最后一次."\n"scanf

我知道这种有问题的scanfchar那就是scanf("%c",&cval)--->以scanf(" %c",&cval)留下一些小的空间,以避免scanf函数读取行的末尾.但整数是什么?

我已经在这里看到了一些问题链接在这里他们似乎都认为scanf()"retarted"和fget()应该总是被使用..是真的如此,在项目中避免它是否好?我的意思是消除所有这些错误,有没有办法防止这种情况.我必须使用fget()这个或有没有办法解决这个问题scanf().欢迎所有评论,感谢您的时间.我只是想知道是否有办法解决它,我知道如何使用%n.

#include <stdio.h>
int main(void) {


    int i =0 ,byte_count = 0,val;

    printf("Enter a number: ");

    scanf("%d%n",&val,&byte_count);
    while (i < 3){
        printf("byte count is: %d\n",byte_count);


        scanf("%d%n",&val,&byte_count);
        i++;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c scanf

0
推荐指数
1
解决办法
286
查看次数

标签 统计

c ×3

scanf ×3

c++ ×1