这是我编写的将文件拆分成部分的代码。代码中的语言无关紧要,我将向您展示相关部分。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
long meret(FILE* fajl) {
long jelenlegi = ftell(fajl);
long meret;
fseek(fajl, 0L, SEEK_END);
meret = ftell(fajl);
fseek(fajl, jelenlegi, SEEK_SET);
return meret;
}
int main(int argc, char* argv[])
{
FILE *fp, *fptemp;
long size, tmpsize;
int db;
int ct = 1, i = 0, index = 0, j, z;
char temp[30];
char temp2[30];
char actual[30];
char filenev[30];
char s[60];
char *tmp;
char filenevsorsz[5];
char *aktualis, ment[30];
printf("A hasznalat: \n");
printf("------------\n\n");
printf("Elso parancssori argumentum: -d\n");
printf("Masodik: a file elerhetosege\n");
printf("Harmadik: darabolasban a darabok maximalis merete byte-ban!\n\n");
if(argc != 4) {
printf("Nem jo a hasznalat! Olvasd el a hasznalati utmutatot!");
return;
}
fp = fopen(argv[2], "rt");
if(!fp) {
printf("Hiba a file megnyitasakor...");
return;
}
printf("\n\n");
size = meret(fp);
printf("A file merete: %d byte\n", size);
printf("A megadott darabolasi parameter: %s\n\n", argv[3]);
db = atoi(argv[3]);
printf("Osszesen %d file-ra kell szamitanunk.\n", (size/30)+1);
j = 0;
for(i=0; i<strlen(argv[2])-4; i++) {
filenev[j++] = argv[2][i];
}
tmp = malloc(sizeof(filenev));
strcpy(tmp,filenev);
aktualis = malloc(sizeof(db));
i = 1;
while(i<=3) {
printf("Most csinalom a %d. fajlt...", i);
strcpy(filenev, tmp);
fread(aktualis, 1, db, fp);
printf(" Az aktualis sor: %s\n", aktualis);
strcat(filenev, "00");
sprintf(filenevsorsz, "%d", i);
strcat(filenev, filenevsorsz);
strcat(filenev, ".txt");
fptemp = fopen(filenev, "a");
fprintf(fptemp, "%s", aktualis);
printf("A filenev: %s", filenev);
tmpsize = meret(fptemp);
printf("\nA meret: %ld byte\n", tmpsize);
printf("\n");
i++;
}
}
这是做什么的:它读取文件,从文件读取X字节(命令行arg),并从中创建子文件。
例如:test.txt包含30个字节。如果我设置为每个分割10个字节,它将给我: test001.txt test002.txt test003.txt
这是相关部分:
while(i<=3) {
printf("Most csinalom a %d. fajlt...", i);
strcpy(filenev, tmp);
fread(aktualis, 1, db, fp);
printf(" Az aktualis sor: %s\n", aktualis);
strcat(filenev, "00");
sprintf(filenevsorsz, "%d", i);
strcat(filenev, filenevsorsz);
strcat(filenev, ".txt");
fptemp = fopen(filenev, "a");
fprintf(fptemp, "%s", aktualis);
printf("A filenev: %s", filenev);
tmpsize = meret(fptemp);
printf("\nA meret: %ld byte\n", tmpsize);
printf("\n");
i++;
}
它复制到所有文件(每个10个字节)除了第一个。它会给我一些奇怪的字符,并且我尝试的每个文件都会缩短整个文件4个字节。但每当我尝试打印读取行(30字节)时,它都会打印出来,除了将其打印到文件时,它会给我这个随机字符。有什么建议吗?