首页 > 解决方案 > 输出如何作为 1 而不是 j 的地址

问题描述

为什么输出为 1 而不是 ji 的地址尝试每个字母表仍然给出 1 作为输出

这个程序怎么没有给出 j 的地址,为什么它给出 1 作为输出,我尝试将每个字母作为输入,它仍然给出 1?

#include "stdio.h"
int main()
{
    char arr[100];
    printf("%d", scanf("%s", arr));
    /* Suppose that input value given
         for above scanf is "jje" */
    return 2;
}

它不应该给出第一个字母的地址,即 j

标签: cscanf

解决方案


不,您正在打印scanf. 这不是任何地址,但是(强调我的):

成功时,该函数返回参数列表中成功填充的项目数。由于匹配失败、读取错误或到达文件结尾,此计数可以与预期的项目数匹配或更少(甚至为零)。

由于该scanf结果成功匹配%d,因此您得到1.

如果你想打印那个地址,也就是 的地址arr,你可以试试

printf("%p", arr);

推荐阅读