printfによる日本語出力の文字化け
Posted: 2012年6月28日(木) 15:39
日本語文字列からある一定の長さの文字数だけ出力するプログラムを作っています。
日本語はchar3文字分だったので、char変数Aに入れた文字列を3文字ごとに設定した長さを超えないか判別し、超えた場合別のchar変数Bに
それまでのchar変数Aの中身を入れてそれを出力するプログラムです。
動作は問題ないのですが、出力が「・・・・・・・・・・・・・・・・・・・・・・・・・・・・・」と完全に文字化け状態になっています。
どうすれば解決するでしょうか。 よろしくお願いします。
プログラムを以下に貼ります。
日本語はchar3文字分だったので、char変数Aに入れた文字列を3文字ごとに設定した長さを超えないか判別し、超えた場合別のchar変数Bに
それまでのchar変数Aの中身を入れてそれを出力するプログラムです。
動作は問題ないのですが、出力が「・・・・・・・・・・・・・・・・・・・・・・・・・・・・・」と完全に文字化け状態になっています。
どうすれば解決するでしょうか。 よろしくお願いします。
プログラムを以下に貼ります。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define WORD_MAX 84
void printtext(char *string)
{
int i;
printf("%s",string);
puts(string);
}
void textprocess(char *string,int font)
{
static int words =0;
int tmpwords = words;
int i=0;
int j;
int k =0;
char sendstring[1000];
while(string[i] != '\0'){
i = i + 3;
if(words == WORD_MAX){
for(j = tmpwords;j<WORD_MAX;j++){
sendstring[k] = string[j+k];
k++;
}
sendstring[k] = '\n';
printtext(sendstring);
for(j=0;j<1000;j++){
sendstring[j] = '\0';
}
words = 0;
tmpwords = 0;
k=0;
}
else{
words = words + 2;
}
}
return;
}
int main()
{
char str[1000];
int font =0;
scanf("%s",str);
textprocess(str,font);
}