文字列を引数にしたがって置換するプログラムを作りました。
文字列を引数にしたがって置換するプログラムを作りました。
test.txtを新規作成、abcdefghijklmnopqrstuvwxyz を書き込みセーブ
引数 : abc=zz mnopq=u
- 出力結果 -
zzdefghijklurstuvwxyz
というような結果になるプログラムを作ったのですが、これをstr系とmem系の関数を使わずにポインタを使って組みなおしたいと思うのですが、全くわからないので質問させて頂きました。
よろしくお願いします。
質問下手なので質問でダメな点があれば随時補足していきたいと思います。
#include"stdafx.h"
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define BUF 128
#define MOJI 128
#define MAX 128
#pragma warning(disable : 4996)
using namespace System;
int main(int argc, char *argv[])
{
FILE *fp;
char txt[BUF];
char hiki_mae[MAX][MOJI];
char hiki_ato[MAX][MOJI];
int i = 0, n = 0, j = 0;
int hiki_num = 0;
char txt_mae[BUF], txt_ato[BUF];
char *p;
char sagyou_txt[BUF], sagyou_argv[MAX][MOJI];
if(argc < 2){
printf("argc = %d >>> パラメータ不足です\n", argc);
exit(1);
}
if( (fp = fopen("test.txt", "r")) == NULL ){
printf("ファイルがオープンできません\n");
exit(1);
}
for(i = 1; i < argc; i++){
if( strchr(argv[i], '=') != NULL && strlen(argv[i]) > 2){
strcpy(sagyou_argv[hiki_num],argv[i]);
p = strstr(sagyou_argv[hiki_num],"=");
*p = '\0';
strcpy(hiki_mae[hiki_num], sagyou_argv[hiki_num]);
strcpy(hiki_ato[hiki_num], sagyou_argv[hiki_num] + strlen(hiki_mae[hiki_num]) + 1);
hiki_num++;
}
}
while( fgets(txt, BUF, fp) != NULL){
printf("変換前>%s\n",txt);
}
for(n = 0; n < hiki_num; n++){
while( strstr(txt, hiki_mae[n]) != NULL ){
strcpy(sagyou_txt, txt);
p = strstr(sagyou_txt, hiki_mae[n]);
*p = '\0';
strcpy(txt_mae, sagyou_txt);
strcpy(txt_ato, sagyou_txt + strlen(txt_mae) + strlen(hiki_mae[n]));
strcat(txt_mae, hiki_ato[n]);
strcat(txt_mae, txt_ato);
strcpy(txt, txt_mae);
}
}
printf("変換後>%s\n",txt);
fclose(fp);
return 0;
}
お礼
迅速な回答ありがとうございます. なるほど,(CTask*)はキャストだったのですか. わかりやすい説明ありがとうございました!