Board logo

标题: [已解决] 求解,C语言通用符*怎么实现代表不同文件夹里的批量图片和文本文件? [打印本页]

作者: zzz19760225    时间: 2024-8-19 08:49     标题: [已解决] 求解,C语言通用符*怎么实现代表不同文件夹里的批量图片和文本文件?

本帖最后由 zzz19760225 于 2024-8-24 11:17 编辑

win10+vc6.0+easyx
Five66大侠的代码
           #ifdef UNICODE
           swprintf(str,111,L"三国演义-铁笼山%d.jpg",a);
           #else
           sprintf(str,"三国演义-铁笼山%d.jpg",a);
           #endif

里面,三国演义-铁笼山%d.jpg=*%d.jpg
想把把文件名换成通用符,应对不同的批量文件。
编译通过,但是在图片区软件界面黑的,狂点鼠标也不见内容出来。不知道怎么肥事,求解
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <graphics.h>
  6. #ifdef _MSC_VER
  7. #pragma warning(disable:4996)
  8. #endif
  9. int main (){
  10. #ifdef UNICODE
  11. wchar_t str[128]={0};
  12. #else
  13. char str[128]={0};
  14. #endif
  15. initgraph(1200, 700);
  16. int a = 0;
  17. a0:
  18.     while (!kbhit()) {// 无限循环,直到用户按下ESC键  
  19.         MOUSEMSG msg = GetMouseMsg();// 鼠标状态
  20.         if (msg.uMsg == WM_LBUTTONDOWN) {// 检查是否有鼠标点击   
  21.            a=a+1;
  22.            goto a1;
  23.         }  
  24.         if (msg.uMsg == WM_RBUTTONDOWN) {// 如果是右键点击   
  25.            a=a-1;
  26.            goto a1;
  27.         }
  28.         a1:
  29.            #ifdef UNICODE
  30.            swprintf(str,111,L"*%d.jpg",a);
  31.            #else
  32.            sprintf(str,"*%d.jpg",a);
  33.            #endif
  34.            IMAGE img;
  35.            loadimage(&img,str,1200,500);
  36.            putimage(0, 0, &img);
  37.            #ifdef UNICODE
  38.            swprintf(str,111,L"*%d.txt",a);
  39.            #else
  40.            sprintf(str,"*%d.txt",a);
  41.            #endif
  42.            FILE *file = fopen(str, "r");// 打开并读取文本文件
  43.            if (file) {
  44.                char buffer[1024];
  45.                int y = 600; // 假设图片下方开始显示文本,上下600位置写字
  46.                char *line;
  47.                while (fgets(buffer, sizeof(buffer), file)) {// 逐行读取文件内容并显示
  48.                    line = strdup(buffer); // 复制行以便修改
  49.                    outtextxy(20, y, line); // 显示文本,假设从(20, y)开始
  50.                    free(line);            // 释放行内存
  51.                    y += 20;               // 下一行的y坐标
  52.    }
  53.             fclose(file); // 关闭文件
  54.             
  55.     }
  56.          goto a0;
  57.     }
  58. Sleep(3300);
  59. cleardevice();
  60. goto a0;
  61. closegraph();
  62. return 0;
  63. }
复制代码

作者: Five66    时间: 2024-8-19 15:13

额,通配又不一定支持
像这种格式化字符串和文件打开函数之类是肯定是不支持的
通配已知的直接放进变量里
通配未知的自己遍历文件找出来
还有不要在循环中用goto,跟据编译器生成的代码位置不同,可能会中断循环(大部分都会中断)

#ifdef UNICODE
wchar_t *b=L"三国演义-铁笼山";//b不知道就通过查找文件之类的方式找出来
wchar_t str[1024]={0};
swprintf(str,L"%s%d.jpg",b,a);//swprintf(str,sizeof(str),L"%s%d.jpg",b,a);
#else
char *b="三国演义-铁笼山";//b不知道就通过查找文件之类的方式找出来
char str[1024]={0};
sprintf(str,"%s%d.jpg",b,a);
#endif




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2