std::vscanf, std::vfscanf, std::vsscanf



#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdarg>
                                                                                                                
using std::vscanf,
    std::vfscanf,
    std::vsscanf,
    std::va_list,
    std::FILE,
    std::fopen,
    std::fclose,
    std::strcpy,
    std::cerr;

int main(){
    auto readStream = [](char* format, ...){
        va_list l;
        va_start (l, format);
        vscanf(format, l);
        va_end (l);
    };
    
    cerr << "type string then number:";
    
    char format[20]{};
    strcpy(format,"%s %i\0");
    char ch[20]{};
    int num = 0;
    readStream(format, ch, &num);
    cerr << "ex 1 str: " << ch << " num: " << num << "\n";
    
    auto readFile = [](char* format, ...){
        FILE* f = fopen("ztext.txt", "a+");//make sure there's a string and number in ztext.txt
        va_list l;
        va_start (l, format);
        vfscanf(f, format, l);
        va_end (l);
        fclose(f);
    };
    
    readFile(format, ch, &num);
    cerr << "ex 2 str: " << ch << " num: " << num << "\n";
    
    auto readCharacterString = [](char* format, ...){
        const char buffer[100]{"truck 50\0"};
        va_list l;
        va_start (l, format);
        vsscanf(buffer, format, l);
        va_end (l);
    };
    
    readCharacterString(format, ch, &num);
    cerr << "ex 3 str: " << ch << " num: " << num << "\n";
    
    return 0;
}      
C++ Examples© 2024 TBD