C/C++の宿題を片付けます 94代目
■ このスレッドは過去ログ倉庫に格納されています
0148デフォルトの名無しさん
2007/07/29(日) 00:31:13[2] 問題文(含コード&リンク): 暇なので、ソース中のタブなどのインデントを2ch用のインデント? に変換するプログラムの作成。
例えば、以下のような感じのもの( は全角ではなく、半角のものとする)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
FILE *fp_in, *fp_out;
int ch;
char filename[128] = {0}, *p;
if(argc < 2) fprintf(stderr, "usage : %s filename\n", argv[0]), exit(1);
if((fp_in = fopen(argv[1], "r")) == NULL) perror(argv[1]), exit(2);
if((p = strrchr(argv[1], '.')) == NULL) exit(3);
memcpy(filename, argv[1], p - argv[1]);
strcat(filename, ".txt");
if((fp_out = fopen(filename, "w")) == NULL) perror(filename), exit(4);
while((ch = fgetc(fp_in)) != EOF){
if(ch == '\t') fprintf(fp_out, "&nbsp; &nbsp; ");
else fputc(ch, fp_out);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
しかし、これではtabを変換しているだけで、spaceが連続した場合などには対応していない。
そこで、spaceが連続した場合や、tabとspaceが並んだ場合にも対応できるようにすること。
[3] 環境
[3.1] OS: Windows Xp、またはフリーのLinux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C、C++のどちらでもおk
[4] 期限: なし
[5] その他の制限: なし
■ このスレッドは過去ログ倉庫に格納されています