查看:
136
|
回复:
1
|
元器件过多的bom单处理 1404个led灯
|
我是老王
1
主题
1
回复 |
1#
电梯直达
提交bom单的时候,单个单元格不能超过200个字符 这是处理程序。验证可用 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp; int i, group_start, no = 3; char designators[4096]; // 分配足够大的空间以容纳多个设计符号 // 尝试打开或创建文件 fp = fopen("output.csv", "w"); if (fp == NULL) { printf("无法打开文件\n"); return 1; } // 写入标题行 fprintf(fp, "No.,Quantity,Comment,Designator,Footprint,Value,Manufacturer Part,Manufacturer,Supplier Part,Supplier,LCSC Stock,JLCPCB Stock\n"); // 生成设计符号并写入 for (group_start = 1; group_start <= 1404;) { // 重置设计符号字符串 designators[0] = '\0'; int current_length = 0; // 当前设计符号字符串的长度 int quantity = 0; // 记录这一组的元件数量 for (i = group_start; current_length < 200 && i <= 1404; i++) { char buffer[12]; // 临时字符串,足够存储 "U" + 数字 // 构建设计符号 snprintf(buffer, sizeof(buffer), "U%d", i); // 检查是否会超出长度限制 if (current_length + strlen(buffer) + (current_length > 0 ? 1 : 0) <= 200) { // +1 为了之后可能的逗号分隔符 if (current_length > 0) { strcat(designators, ","); // 添加逗号作为设计符号之间的分隔符 } strcat(designators, buffer); current_length += strlen(buffer) + (current_length > 0 ? 1 : 0); // 如果已经添加了设计符号,计算逗号的长度 group_start = i + 1; // 更新下一组的起始位置 quantity++; // 更新这一组的元件数量 } else { break; // 超出长度限制,结束这一组 } } // 写入一行数据,注意这里使用了逗号而不是制表符作为字段分隔符,因为我们现在正在创建CSV文件 fprintf(fp, "%d,%d,XL-1010RGBC-WS2812B,\"%s\",LED-SMD_4P-L1.0-W1.0-TL_XL-1010RGBC-WS2812B,,XL-1010RGBC-WS2812B,XINGLIGHT(成兴光),C5349953,LCSC,12279,111174\n", no++, quantity, designators); } // 关闭文件 fclose(fp); printf("文件写入完成。\n"); return 0; } |
我是老王
1
主题
1
回复 |
2#
我自己写的,用AI辅助编程。
|
|