추가하는 텍스트가 파일의 끝 부분에 추가되는 이상한 버그가 있습니다. 결국 모든 것을 거꾸로 만듭니다.파일 끝에 파일 대신 끝에 텍스트가 추가됩니다.
CODE :
#include <stdio.h>
#include <stdlib.h>
//Check Values
void checkValues(int numDisks, int raidType, int chunkSize){
while (numDisks < 1 || numDisks > 9){
printf("Number inputed for numDisks is not valid, please enter a new value (1-9).\n");
scanf("%d", &numDisks);
}
while(raidType < 0 || raidType > 1){
printf("Number inputed for raidType is not valid, please enter a new value (0-1).\n");
scanf("%d", &raidType);
}
while(chunkSize < 1 || chunkSize > 512){
printf("Number inputed for chunkSize is not valid, please enter a new value (1-512).\n");
scanf("%d", &chunkSize);
}
}
//CreateFile
void createFile(int numDisks){
char raidName[5];
int counter = 1;
//Create each file
while(counter != numDisks + 1){
sprintf(raidName, "raid%d", counter); //Append counter to string
FILE *out = fopen(raidName, "w");
counter++;
}
}
//Write File
void writeFile(int numDisks, char *buffer, int counter){
char raidName[5];
sprintf(raidName, "raid%d", counter); //Append counter to string
//Write File
FILE *out = fopen(raidName, "a");
fprintf(out, "%s", buffer);
}
//Read and Write Files
void rwFile(const char *fileName, int chunkSize, int numDisks){
char buffer[10000];
int counter = 1;
//Reading File
FILE *in = fopen(fileName, "r");
if(in == NULL) return;
//Create File
createFile(numDisks);
while(fgets(buffer, chunkSize + 1, in) != NULL){
//Reset Counter
if(counter > numDisks){
counter = 1;
}
writeFile(numDisks, buffer, counter);
counter++;
}
}
int main(int argc, const char *argv[]){
//Declarations
const char *fileName = argv[1];
int numDisks = atoi(argv[2]);
int raidType = atoi(argv[3]);
int chunkSize = atoi(argv[4]);
checkValues(numDisks, raidType, chunkSize);
rwFile(fileName, chunkSize, numDisks);
}
raid1.txt :
raid1.txt을 작성해야 무엇mmmmiiiieeeeaaaa
:
aaaaeeeeiiiimmmm
내가 fseek과를 사용하여 시도
하지만 아무 소용이
. 누군가가 나를 도와 주거나 올바른 방향으로 나를 가르키면 도움이 될 것입니다. 이것은 C에서 bash를 사용하여 프로그램을 컴파일하고 실행합니다. 전달 된 인수는 test.txt입니다. 4 0 4.
@ikegami의 I 미안하지만 아직도 조금. 캐리지 리턴이 보이지 않습니까? 당신이 \ r을 사용하면 그게 아닌가요? – DazedFury