c - sscanf 格式警告

标签 c string fgets scanf

在尝试编写仅允许数字字符串的程序时,我收到以下警告:

警告:格式“%s”需要 char * 类型的参数,但参数 3 的类型为“char (*)[100]”

为什么我会收到此警告,它的含义/后果是什么?运行代码没有任何问题。

程序:

char check[100];
char line[100];
int i;
int true = 0;
int main
{
fgets(line, sizeof(line), stdin);
sscanf(line, "%s" , &check);
for(i=0; i<3; i++)
    {
    if(isdigit(check[i]) == 0)
        {
        true++;
        }
    else
        continue;
    }

if(true>0)
    printf("Not a number.\n");
else
    printf("Is a number.\n");
return(0);
}

最佳答案

编译器提示在下一行中使用 &check

sscanf(line, "%s" , &check);

预期的参数只是check

sscanf(line, "%s" , check);

关于c - sscanf 格式警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082694/

相关文章:

c++ - std::string 和 const char *

java - 如何将字符串转为整数并相加?

c - fgets 在换行符后包含文本

c - 将标志提取为24位整数的位操作

c - 如何更新函数内的指针参数?

c++ - 段错误,使用 MPI 库乘法矩阵

c - 事件机器人 : Going to the corner on the upper right side in a maze

java - 使用前导空格打印来自扫描仪的字符串输入

c - fget 是如何工作的?

c - 我如何只让用户在 c 中输入一个字符