scanf函数

#include <stdio.h>
int main(void)
{
    int a,b,c;
    printf("请输入三个数字:\n");
    scanf("%d%d%d",&a,&b,&c);
    //scanf参数
    //参数1:用字符串常量表示的输入格式字符串
    //参数2:用户输入的数据要送到那里去(地址)
    printf("a=%d,b=%d,c=%d\n",a,b,c);
    return 0;
}

返回值

scanf("%d %d",&a,&b);
scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。

关于scanf_s函数
ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存泄露。所以vc++2005/2008中提供了scanf_s(),在最新的VS编译器中也提供了scanf_s()。在调用时,必须提供一个数字以表明最多读取多少位字符。目前最新的c11标准中已经将scanf_s函数“转正”了。

自定义函数

int sayHello()              //函数头
{                           //函数体
    printf("Hello,World\n");//函数体
    return 0;               //函数体
}                           //函数体

自定义函数要放在主函数main的上面,如果在主函数下面,则需要在主函数上面添加函数声明,以上面代码为例,上面代码的函数声明为
int sayHello();
注意,不要将自定义函数定义写在main函数中!

定义一个lengthOfString函数,实现和strlen函数相同的功能

#include <stdio.h>
//计算字符串的长度
//在本函数中,没有通过改变字符串的意图
//可以在char*前面加上const限定符,阻止通过该指针影响字符串的内容
//const表示指针自己的值可以修改,但是不允许你通过它改变它所指向位置的值
    int lengrhOfString(const char* srting)
{
    int result = 0;
    while(*string++ != '\0')
    {
        result++;
    }
    return result;
}

字符串的复制

定义一个stringCopy函数

void stringCopy(char* dest, const char* source)
{
    while(*source !='\0')
    {
        *dest = *source;
        dest++;
        source++;
    }
    *dest = '\0';
}
最后修改:2020 年 03 月 17 日
如果觉得我的文章对你有用,请随意赞赏