5

皆さん、文字配列を検索し、「+」、「/」、または「=」の出現箇所をそれぞれ「%2B」、「%2F」、および「%2F」に置き換える必要があります

base64output 変数は次のようになります

FtCPpza+Z0FASDFvfgtoCZg5zRI=

コード

char *signature = replace_char(base64output, "+", "%2B");
signature = replace_char(signature, "/", "%2F");
signature = replace_char(signature, "=", "%3B");

char replace_char (char *s, char find, char replace) {
    while (*s != 0) {
        if (*s == find)
        *s = replace;
        s++;
    }
    return s;
}

(でエラーが出ます)

   s.c:266: warning: initialization makes pointer from integer without a cast

私は何を間違っていますか?ありがとう!

4

6 に答える 6

1

このように修正

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *replace_char (char *str, char find, char *replace) {
    char *ret=str;
    char *wk, *s;

    wk = s = strdup(str);

    while (*s != 0) {
        if (*s == find){
            while(*replace)
                *str++ = *replace++;
            ++s;
        } else
            *str++ = *s++;
    }
    *str = '\0';
    free(wk);
    return ret;
}

int main(void){
    char base64output[4096] = "FtCPpza+Z0FASDFvfgtoCZg5zRI=";
    char *signature = replace_char(base64output, '+', "%2B");
    signature = replace_char(signature, '/', "%2F");
    signature = replace_char(signature, '=', "%3B");
    printf("%s\n", base64output);

    return 0;
}
于 2013-05-15T22:40:25.317 に答える