C语言文件比对后创新文件
希望大神们指导档案建立后 无法新增档案
会以同一个文件持续下去 且覆盖原文件内容
我想要做到文件比对
若文件存在
则创新文件
若不存在
也创新文件
但每次只创建一个新文件
内部内容可以直接写入任意值
档名以流水号形式增加
example :
file_001
file_002
file_003.
.
.
.
file_020
a87949 发表于 2021-6-30 09:44
谢谢,我知道C在操作上比较不容易,但我只能使用C语言
主要是因为 在下使用的单片机没有支援 python
你看看这个呢??#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <string.h>
char *substring(char *dst,char *src,int start)
{
char *p=dst;
char *q=src;
int length=strlen(src);
int dstlen=length-4-4;
if(start>=length||start<0 || dstlen<1)
return NULL;
q+=start;
while(dstlen--)
{
*(p++)=*(q++);
}
*(p++)='\0';
return dst;
}
char*getfilename(constchar * path,char* dst )
{
struct_finddata_tdata;
chartmp={"\0"};
longhnd = _findfirst( path, &data );
if( hnd < 0 )
{
return NULL;
}
int nRet = (hnd <0 ) ? -1 : 1;
int max=0;
while( nRet >= 0 )
{
if( data.attrib!= _A_SUBDIR ){
int t= atoi(substring(tmp,data.name,4));
if (t>max) max=t;
}
nRet = _findnext( hnd, &data );
}
_findclose( hnd );
sprintf(dst,"file%04d.txt",max+1);
return dst;
}
int main()
{
char filename={"\0"};
char *file=getfilename(".\\file*.txt",filename);
FILE *fp;
if (file){
fp = fopen(file, "w");
printf("%s文件创建成功\n",file);
}else
{
fp=fopen("file0001.txt","w");
printf("初始文件创建成功\n");
}
fclose(fp);
return 0;
}
/*
PS D:\我> ./wp1
初始文件创建成功
PS D:\我> ./wp1
file0002.txt文件创建成功
PS D:\我> ./wp1
file0003.txt文件创建成功
PS D:\我> ./wp1
file0004.txt文件创建成功
PS D:\我> ./wp1
file0005.txt文件创建成功
PS D:\我> ./wp1
file0006.txt文件创建成功
PS D:\我>
*/ 若文件存在
则创新文件
若不存在
也创新文件
这不就是直接创建新文件,还要判断文件是否存在??? 在不确定的情况下是否能能够确定文件是否存在
采用连续新增的做法
为了避免 覆盖掉之前的文件 所以要先确认是否有已存在之文件
要的
因为创新文件
并不会持续创新
而是会覆盖掉原本的文件
这个作法是要保留原文件
并持续新增文件 a87949 发表于 2021-6-29 11:17
在不确定的情况下是否能能够确定文件是否存在
采用连续新增的做法
为了避免 覆盖掉之前的文件 所以要先确 ...
你这样说别人也没办法帮你
说明白一些 要是说不明白举例
你这啥意思啊
file01 存在则创建file02file01 不存在则 创建file01???? wp231957 发表于 2021-6-29 11:42
你这样说别人也没办法帮你
说明白一些 要是说不明白举例
你这啥意思啊
对!
就试这个
抱歉个人表达能力不好
a87949 发表于 2021-6-29 11:44
对!
就试这个
那是不是01在就02,此时02在就03假设3也在就04一直下去??? 看不懂你的问题
什么叫创新文件?生活中处处有创新? wp231957 发表于 2021-6-29 11:47
那是不是01在就02,此时02在就03假设3也在就04一直下去???
是的就是这样
因为困扰小弟很久了.....所以才向大神们提出讨论 a87949 发表于 2021-6-29 13:05
是的就是这样
因为困扰小弟很久了.....所以才向大神们提出讨论
我好久都不写c代码了,估计都忘了,而且c操作字符串也不如其他语言方便
我用python写了一段 你看看 是不是你要的意思
import glob
filelist=glob.glob("file*.txt")
if "file001.txt" not in filelist:
f=open("file001.txt","w")
f.close()
else:
lst=) for x in filelist]
s="file"+"0"*(len(filelist)-len(str((max(lst)))))+str(max(lst)+1)+".txt"
f=open(s,"w")
f.close()
filelist=glob.glob("file*.txt")
print(filelist)
'''
PS D:\我> py file.py
['file001.txt', 'file002.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt', 'file004.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt', 'file004.txt', 'file005.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt', 'file004.txt', 'file005.txt', 'file006.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt', 'file004.txt', 'file005.txt', 'file006.txt', 'file007.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt', 'file004.txt', 'file005.txt', 'file006.txt', 'file007.txt', 'file008.txt']
PS D:\我> py file.py
['file001.txt', 'file002.txt', 'file003.txt', 'file004.txt', 'file005.txt', 'file006.txt', 'file007.txt', 'file008.txt', 'file009.txt']
PS D:\我> py file.py
''' a87949 发表于 2021-6-29 13:05
是的就是这样
因为困扰小弟很久了.....所以才向大神们提出讨论
建个 i 变量,值就为 1
然后判断,如果 00{i} 存在,i 就++,变成2
然后再判断 00{i},一直循环下去
直到没有 00{i}, 退出循环,新建文件 wp231957 发表于 2021-6-29 13:42
我好久都不写c代码了,估计都忘了,而且c操作字符串也不如其他语言方便
我用python写了一段 你看看 是 ...
谢谢,我知道C在操作上比较不容易,但我只能使用C语言
主要是因为 在下使用的单片机没有支援 python
a87949 发表于 2021-6-30 09:44
谢谢,我知道C在操作上比较不容易,但我只能使用C语言
主要是因为 在下使用的单片机没有支援 python
#include <stdio.h>
int main(void) {
FILE *fp;
fp = fopen("count", "r+");
if(!fp) {
fp = fopen("count", "w+");
fprintf(fp, "1");
fseek(fp, 0, SEEK_SET);
}
size_t count;
fscanf(fp, "%lu", &count);
fseek(fp, 0, SEEK_SET);
fprintf(fp, "%lu", count + 1);
fclose(fp);
char buff;
snprintf(buff, 128, "file_%.4lu.txt", count);
printf("count: %s\n", buff);
fp = fopen(buff, "w+");
fprintf(fp, "%s", buff);
fclose(fp);
return 0;
}
抱歉,文件这方面不太熟悉 感谢大神的指导
本次最佳答案 经由实验来说明
人大大: 在使用上,会造成系统增加大量的DLL档案,在移植后一样也会在新系统增加档案 若删除 前次的档案 顺序不会 reset
w大大 : 会先确定是文件是否存在然后才会新增档案 ,若旧有文件移除后,会从头开始新增
所以选择W大大为最佳答案
页:
[1]