落書きノート

ふと自分が気になった事を書いてます

C++で問題を解く

久しぶりに解いたような気がします。今回はこんな感じです。

#include <iostream>
#include <cstdlib>

using namespace std;

int strcmp(const char* s1, const char* s2){
    while(*s1 == *s2){
        if(*s1 == '\0')
            return 0;
        
        s1++;
        s2++;
    }

    return (unsigned char)*s1 - (unsigned char)*s2;
}

int strncmp(const char* s1, const char* s2, size_t n){
    while(*s1 && *s2 && n){
        if(*s1 != *s2){
            return (unsigned char)*s1 - (unsigned char)*s2;
        }
        s1++;
        s2++;
        n--;
    }

    if(!n) return 0;
    if(*s1) return 1;
    return -1;
}

int main(void){
    char abc[] = "ABCDE";
    char* st = (char*)malloc(sizeof(char) * 16);

    while(1){
        cout << "文字列st : ";
        cin >> st;

        if(!(strcmp(st, "XXXXX")))
            break;

        cout << strcmp(abc, st) << endl;
        cout << strncmp(abc, st, 3) << endl;
    }

    return 0;
}
#include <iostream>
#include <cstdlib>

using namespace std;

int strchr_idx(const char* s, char c){
    int n = 0;

    while(*s != c){
        s++;
        n++;
    }

    return n;
}

int main(void){
    char target[20];
    char c;

    cout << "文字列 : ";
    cin >> target;
    cout << "探す文字 : ";
    cin >> c;

    cout << "その文字は" << strchr_idx(target, c) + 1 << "文字目にあります。" << endl;

    return 0;
}

今回は設定やら何やらで少し時間を取られましたが、次回こそはやれる量を増やしていきたいと思います。