
■strcpy+strcatをダラダラ書く
void strcpy_cat(char *buf,char *argv[]){
strcpy(buf,"/");
strcat(buf,argv[1]);
strcat(buf,"/");
strcat(buf,argv[2]);
strcat(buf,"/");
strcat(buf,"file");
}
編集後のイメージがわかりにくいです。
■sprintfで1行で書く
void Sprintf(char *buf,char *argv[]){
sprintf(buf,"/%s/%s/file",argv[1],argv[2]);
}
編集後のイメージがつかみやすいです。
■まとめ(コンパイル可能)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//strcpy+strcatをダラダラ書く
void strcpy_cat(char *buf,char *argv[]){
strcpy(buf,"/");
strcat(buf,argv[1]);
strcat(buf,"/");
strcat(buf,argv[2]);
strcat(buf,"/");
strcat(buf,"file");
}
//sprintfで1行で書く
void Sprintf(char *buf,char *argv[]){
sprintf(buf,"/%s/%s/file",argv[1],argv[2]);
}
int main(int argc,char *argv[]){
if(argc != 3){
perror("Usage:./a.out root home\n");
exit(1);
}
char stra[1024];
char strb[1024];
strcpy_cat(stra,argv);
Sprintf(strb,argv);
if(strcmp(stra,strb) == 0){
fprintf(stdout,"同じ結果になる\n");
} else {
fprintf(stderr,"ここに来たらバグ\n");
}
puts(stra);
puts(strb);
}
■実行結果
./a.out root home
同じ結果になる
/root/home/file
/root/home/file