プロが教える店舗&オフィスのセキュリティ対策術

name.txtというテキストファイルがあり、中身は
123 abc
456 def

となっています。

このテキストファイルを1行ずつ読み込んで、
mv 123/ abc/
のようにテキストファイルの中身に沿って、ディレクトリの名前を一気に変更したいのですが、上手くいきません。
どこがおかしいか、教えていただけないでしょうか。

/* header files */
#include <stdio.h>
#include <stdlib.h>

/* main */
int main(int argc, char *argv[]) {
char *buff;
float ret, ter;
char a[50],b[50];
FILE *fp, *fq;

fp = fopen(argv[1], "r");

while((ret = fscanf(fp,"%s %s",a,b)) != EOF){
sprintf(buff, "mv %s %s",a,b);
system(buff);
}

fclose(fp);
return EXIT_SUCCESS;
}

A 回答 (1件)

>上手くいきません。



どういう結果になったか…くらいは掲示しましょう。

>どこがおかしいか、教えていただけないでしょうか。

>char *buff;

ポインタ用の領域を用意しただけで、どこを指しているのかは不定です。
というのは理解されてますか?

>sprintf(buff, "mv %s %s",a,b);

どっか判らないけど指しているトコに書き込んでちょ。
と指定しています。

プログラム自身をぶっ壊そうとするかも知れませんし、たまたま問題ないように見える部分をぶっ壊すかも知れません。
最近のOSなら、ちょっと待てぃ!!とプロセス停めるなりされるでしょう。

ついでに……
>name.txtというテキストファイルがあり、中身は
>123 abc
>456 def
ならば…
>sprintf(buff, "mv %s %s",a,b);

>mv 123/ abc/
にはなりませんよ。
パス区切りのスラッシュはどこから生まれるんでしょう?
    • good
    • 0
この回答へのお礼

自己解決しました。
ありがとうございます。

お礼日時:2014/07/17 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!