今回、C言語でファイルを読み込みそのファイルの文字コードをShift-JISに変換するプログラムを作成したのですが,変換後の文字が以下のソースコードを使用すると表示されません.どこがおかしいのか教えてください.引数としては第一引数に使用するファイル名,第二引数にはそのファイルの文字コードを指定してあります.
#include <stdio.h>
#include <string.h>
#include <iconv.h>
#define N 100
#define L 1000
/* コード内に与えられた文字列の文字コード変換を行う */
int main(int argc, char *argv[]) {
char src[L];
char dst[L];
int src_len =0;
int dst_len = sizeof(dst) - 1;
char *buf_in;
char *buf_out;
char *code;
char *filename;
iconv_t conv;
FILE *fp;
filename = argv[1]; src_len = strlen(filename); code = argv[2]; fp = fopen(filename,"r"); while(fgets(src,L,fp) != NULL) { /* 文字コード前の文字列を表示 */ fprintf(stderr, "Before: %s\n", src); /* * src, dst は配列であり,そのまま iconv() 関数に &src, &dst * と渡せないため,いったん別のポインタ変数に渡す */ buf_in = src; buf_out = dst; /* UTF-8 から Shift-JIS への変換器を作成 */ conv = iconv_open("Shift-JIS",code ); /* 変換 */ iconv(conv, &buf_in, &src_len, &buf_out, &dst_len); /*文末処理*/ *buf_out = '\0'; /* 変換器を終了 */ iconv_close(conv); /* 文字コード後の文字列を表示 */ fprintf(stderr, "After: %s\n", dst); } fclose(fp); return 0;
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。