![記事サムネイル](https://prototype5ch.com/wp-content/uploads/2024/07/apJ73D4ClEqr1721759420.jpg)
- 1 : 2024/07/24(水) 02:52:29.662 ID:zp1S3nDQa
- “うんち”
“ちんちん”
“ま●こ”って文字列のうちどれかがファイル名に入ってたら別のディレクトリに移すってのやりたいんやけど
chatgptに書かせたんやけど上手くいかない試しに条件満たすファイルの数だけ数えさせても0って言われんねん
これなんでなん??日本語なのがややこしい?? - 2 : 2024/07/24(水) 02:54:13.017 ID:d3sH29jTQ
- 英語は試したんか?
- 3 : 2024/07/24(水) 02:55:19.285 ID:zp1S3nDQa
- >>2
うんことかのとこほんとは人名 - 4 : 2024/07/24(水) 02:55:49.985 ID:klYGsNmUo
- シェルスクリプトでやったほうが良くね?
- 6 : 2024/07/24(水) 02:58:45.842 ID:zp1S3nDQa
- >>4
なにそれ🥺
授業でC言語触っただけだからCしか環境ない
せっかくならこいつにやらせてみるかって思っただけなんや、ゴリゴリgptに書かせてるからなんの勉強にもなってないが - 11 : 2024/07/24(水) 03:02:14.202 ID:klYGsNmUo
- >>6
複数のコマンドを逐次実行するようにしてくれるやつや - 5 : 2024/07/24(水) 02:57:19.007 ID:zp1S3nDQa
- gpt選手の書いたコードがこちら
#include
#include
#include
#include#define NUM_STRINGS 39
const char *strings[NUM_STRINGS] = {
“string1”, “string2”, “string3”, /* … その他の36個の文字列 … */ “string39”
};int containsAny(const char *filename) {
for (int i = 0; i < NUM_STRINGS; i++) {
if (strstr(filename, strings[i]) != NULL) {
return 1; // 一致する文字列が見つかった
}
}
return 0; // 一致する文字列が見つからなかった
}int main() {
const char *sourceDir = “C:\\path\\to\\source\\*”;
const char *destinationDir = “C:\\path\\to\\destination\\”;
char oldPath[MAX_PATH];
char newPath[MAX_PATH];WIN32_FIND_DATA findFileData;
HANDLE hFind = FindFirstFile(sourceDir, &findFileData);if (hFind == INVALID_HANDLE_VALUE) {
printf(“ディレクトリを開くことができませんでした。\n”);
return 1;
}do {
if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
snprintf(oldPath, sizeof(oldPath), “%s%s”, sourceDir, findFileData.cFileName);
snprintf(newPath, sizeof(newPath), “%s%s”, destinationDir, findFileData.cFileName);if (containsAny(findFileData.cFileName)) {
if (rename(oldPath, newPath) == 0) {
printf(“ファイル %s を移動しました。\n”, findFileData.cFileName);
} else {
perror(“ファイルの移動に失敗しました”);
}
}
}
} while (FindNextFile(hFind, &findFileData) != 0);FindClose(hFind);
return 0;
} - 26 : 2024/07/24(水) 03:12:02.539 ID:klYGsNmUo
- >>5
ディレクトリ内のファイルはちゃんと取得できるんか? - 32 : 2024/07/24(水) 03:14:33.707 ID:zp1S3nDQa
- >>26
>>19
これは該当0個って言われるからディレクトリ開いて検索始める所まではできてると思う
ディレクトリ覗く権限がないとかそんなレベルでは無いと思う、多分やけど😅 - 7 : 2024/07/24(水) 03:00:08.702 ID:zp1S3nDQa
- 人力でやれば15分で終わるんやけどなんか深夜の思いつきでやったんや
そしたら全然上手くいかなくてなんか意地でずっとやってる - 8 : 2024/07/24(水) 03:00:54.562 ID:zp1S3nDQa
- 誰か自信ニキおらんの??
- 9 : 2024/07/24(水) 03:01:19.992 ID:zp1S3nDQa
- 底辺大学生の暇つぶしに付き合ってくれる大人募集中や
- 10 : 2024/07/24(水) 03:01:58.171 ID:vm/76N7zO
- Instr関数でいいよね
- 14 : 2024/07/24(水) 03:03:00.745 ID:zp1S3nDQa
- >>10
Cの環境と初歩的な操作ができるからやらせてるだけでコードの中身はワイの知識大幅に超えてるんや
だから申し訳ないんやけど具体的にどう書けばいいのか教えてくれんか - 12 : 2024/07/24(水) 03:02:42.566 ID:klYGsNmUo
- どこでエラー出すのかも貼ってや
- 16 : 2024/07/24(水) 03:04:45.297 ID:zp1S3nDQa
- >>12
エラーとかでない、メッセージなんも出ない
コンパイルエラーもなしこれもしや検索の段階であかんか?と思って、別で当てはまるファイルの数だけ数える奴書いたら、該当ファイル0個って言われたんや
- 13 : 2024/07/24(水) 03:03:00.600 ID:aapU/kng5
- pythonでやれ
- 17 : 2024/07/24(水) 03:05:53.067 ID:zp1S3nDQa
- >>13
コンパイルじゃなくて機械語に翻訳するのと実行一気にやる感じのやつワイのPythonの知識こんだけや
- 15 : 2024/07/24(水) 03:03:33.268 ID:x15j1sn3g
- C言語ってワイがガキの頃からあるけどまだ使われてるの?
- 18 : 2024/07/24(水) 03:08:08.621 ID:mz58Xpjv/
- まったくわからん🤪
- 19 : 2024/07/24(水) 03:08:09.427 ID:zp1S3nDQa
- これが数数えさせるだけのやつ
こっちは普通に動くけど0個って言われる
↓↓↓#include
#include
#include
#include#define NUM_STRINGS 39
const char *strings[NUM_STRINGS] = {
“string1”, “string2”, “string3”, /* … その他の36個の文字列 … */ “string39”
};// 特定の文字列のいずれかがファイル名に含まれているかを確認する関数
int containsAny(const char *filename) {
for (int i = 0; i < NUM_STRINGS; i++) {
if (strstr(filename, strings[i]) != NULL) {
return 1; // 一致する文字列が見つかった
}
}
return 0; // 一致する文字列が見つからなかった
}int main() {
const char *sourceDir = “C:\\path\\to\\source\\*”; // ワイルドカードを追加
HANDLE hFind;
WIN32_FIND_DATA findFileData;
int count = 0; // ファイルカウント用の変数// ディレクトリを開く
hFind = FindFirstFile(sourceDir, &findFileData);if (hFind == INVALID_HANDLE_VALUE) {
printf(“ディレクトリを開くことができませんでした。エラーコード: %lu\n”, GetLastError());
return 1;
}// ディレクトリ内のファイルを列挙
do {
// ディレクトリでないファイルのみ対象
if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
if (containsAny(findFileData.cFileName)) {
count++; // 対象ファイルのカウント
}
}
} while (FindNextFile(hFind, &findFileData) != 0);// ディレクトリを閉じる
FindClose(hFind);// 結果を出力
printf(“条件に一致するファイルの数: %d\n”, count);return 0;
} - 20 : 2024/07/24(水) 03:08:39.040 ID:2hniA5lKM
- ソースの文字コードとファイル名の文字コードが違うんちゃうん
- 23 : 2024/07/24(水) 03:11:05.738 ID:zp1S3nDQa
- >>20
コードはVSCodeで書いてUTF-8でエンコードのはずなんやけど
ファイル名ってデフォだと違ったりする感じ?もしかして - 29 : 2024/07/24(水) 03:13:12.240 ID:pqmuvNE7E
- >>23
とりあえず帰ってきたfile名表示させて確認しないと - 38 : 2024/07/24(水) 03:16:27.382 ID:zp1S3nDQa
- >>29
すまんgptに書かせて背伸びしてるだけでガチで触りしかやってないんやけど帰ってくるファイル名ってどこで見るんや - 42 : 2024/07/24(水) 03:19:31.128 ID:klYGsNmUo
- >>38
printf(“%s\n”, findFileData.cFileName);これをdo whileの中に入れればええんやないか?
- 49 : 2024/07/24(水) 03:26:57.273 ID:zp1S3nDQa
- >>42 やったら普通にファイル名出た!!!
これがいい事なのか悪いことなのかはわからん - 30 : 2024/07/24(水) 03:13:31.786 ID:2hniA5lKM
- >>23
試しに英語ファイル名でテストして成功するか実験してみろや - 39 : 2024/07/24(水) 03:16:33.544 ID:zp1S3nDQa
- >>30
賢い - 22 : 2024/07/24(水) 03:10:43.581 ID:mz58Xpjv/
- 専攻でも無いし違ってたらすまんな
- 24 : 2024/07/24(水) 03:11:40.925 ID:1y1qmnV0.
- ためしにcontainsAnyのとこでfilenameとstrings[i]をprintfで逐一表示させてみたら?
- 36 : 2024/07/24(水) 03:16:09.209 ID:fsSUGsmGD
- >>24
とりあえずこれやれや - 46 : 2024/07/24(水) 03:23:46.079 ID:zp1S3nDQa
- >>24
>>36
ファイル名の後に文字化けした変な文字列がついてるのが羅列された
なんかめっちゃ長い出力だったから入れるとこ間違えてるかもやけど - 48 : 2024/07/24(水) 03:25:58.927 ID:1y1qmnV0.
- >>46
ヌル文字入ってないんちゃうか? - 25 : 2024/07/24(水) 03:11:48.313 ID:ngpkmoCIS
- 今更Cって何するんや?
- 33 : 2024/07/24(水) 03:14:43.744 ID:NkVmkH1ih
- Cでやる内容ではない
- 40 : 2024/07/24(水) 03:18:39.720 ID:DHtNg1XCG
- GPTに直せって言えば直すんちゃうか
- 50 : 2024/07/24(水) 03:27:10.531 ID:zp1S3nDQa
- >>40
それ100回やった - 41 : 2024/07/24(水) 03:19:11.743 ID:dRNI2EPlS
- 久々に触るもんやないなCは
定期的に触ってないとわからんくなる - 43 : 2024/07/24(水) 03:21:22.332 ID:1y1qmnV0.
- VSCodeでデバッガ使えるならそれで追っていくのが一番早いんちゃうか?
- 51 : 2024/07/24(水) 03:27:59.905 ID:zp1S3nDQa
- >>43
自分で調べて言われるがままに使えるようにはしたけど
デバッグ必要なほどのプログラム授業で到底まだやってないからデバッガーの使い方が分かりません一切
すまんな無能で - 44 : 2024/07/24(水) 03:22:11.943 ID:0K9KjjiPM
- findしてパイプしてmvすればええね
- 45 : 2024/07/24(水) 03:23:16.656 ID:pAGQuGgAx
- Cなんて古の言語使ってなにするんや
組み込みでもやる気か - 52 : 2024/07/24(水) 03:28:55.056 ID:zp1S3nDQa
- >>45
ワイ「手動で探すのちょっとめんどいなぁ…せや!暇つぶしがてら授業で触ったCでやらせてみたろ!!」
なお今 - 47 : 2024/07/24(水) 03:25:01.214 ID:mz58Xpjv/
- 文字コードかあ
コメント