• 徐洲更
    2020-01-25
    知识点:
    1. 函数的实参和形参,形参修改不会修改实参
    2. 为了在函数中更改函数外的参数,可以传入指针,直接修改内存里的内容
    3. 快速将'0'-'9'字符转成数字0-9的方法, '9' - '0'
    4. 流处理方式转换字符串为数字, num = num * 10 + (str[i] - '0')

    题目做题过程在GitHub上, https://github.com/xuzhougeng/learn-c-in-JKSJ/blob/master/jksj-09-myscanf
    展开

    作者回复: 不错!作业题目做的很棒。完全达到了自学的要求!

    
     1
  • rocedu
    2020-02-10
    看函数参数时,只要是指针类型,就要注意是不是输出参数了。另外,为什么要输出参数,很多API的返回值都是错误码,0表示成功,其他表示错误类型,功能值需要通过输出参数传出来。
    
    
  • 信念
    2020-02-09
    #include<stdio.h>
    int main(){
      int n = 98;
      my_scanf("12345", &n);
      printf("%d", n); // 输出 12345,而不是 98
    return 0;
    }
    这是老师您的程序,但是在我编译时出现了问题,问题如下,麻烦老师看一下:
    test35.cpp: In function ‘int main()’:
    test35.cpp:4:3: error: ‘my_scanf’ was not declared in this scope
       my_scanf("12345", &n);
       ^~~~~~~~
    test35.cpp:4:3: note: suggested alternative: ‘vsscanf’
       my_scanf("12345", &n);
       ^~~~~~~~
       vsscanf
    好像是说没有声明my_scanf
    展开

    作者回复: 你误会了,我的那段代码是说明my_scanf函数的功能的。而没有my_scanf函数的具体实现,只有加上了具体实现以后,代码才能通过编译。

     1
    
  • 小林coding
    2020-02-01
    老师,我的可变参数的myScanf函数
    代码:
    #include <iostream>
    #include <stdarg.h>

    void myScanf(const char *format, int *pInt, ...) {
        va_list ap;
        int *p = NULL;
        int num = 0;
        int cnt = 0;

        va_start(ap, pInt);

        while (*format) {
            if (*format == ' ') {
                if (cnt == 0) {
                    *pInt = num;
                } else {
                    p = va_arg(ap, int*);
                    *p = num;
                }
                num = 0;
                cnt++;
            } else {
                num = num * 10 + *format - '0';
            }

            format++;
        }

        p = va_arg(ap, int*);
        *p = num;

        va_end(ap);
    }

    int main() {
        int n, m, j;
        myScanf("123 456 789", &n, &m, &j);
        std::cout << n << " " << m << " " << j << std::endl;
        return 0;
    }

    输出:
    123 456 789
    展开

    作者回复: 可以打80分,稍微有点儿缺憾的就是:没有考虑负数的情况哦。d(^_^o)

     1
    
我们在线,来聊聊吧