#include <stdio.h>
#include <string.h> // Included for strcpy function
#define MAX_FILES 100
#define BLOCK_SIZE 1024 // Size of each block in bytes
// Structure to represent a file
typedef struct {
char name[50];
int size; // Size of the file in blocks
} File;
// Array to store files
File files[MAX_FILES];
// Function to allocate space for a new file sequentially
int allocateSequential(char name[], int fileSize) {
int i = 0;
int totalSize = 0;
// Calculate the total size of existing files
for (i = 0; i < MAX_FILES && files[i].size != 0; i++) {
totalSize += files[i].size;
}
// Check if there's enough space for the new file
if (totalSize + fileSize > MAX_FILES * BLOCK_SIZE) {
printf("Not enough space for file allocation.\n"); return -1;
}
// Find the first available position for the new file
for (i = 0; i < MAX_FILES && files[i].size != 0; i++);
// Store the file information
files[i].size = fileSize;
printf("File %s allocated successfully.\n", name
); return 0;
}
int main() {
// Example usage
allocateSequential("file1.txt", 2);
allocateSequential("file2.txt", 3);
allocateSequential("file3.txt", 1);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4gLy8gSW5jbHVkZWQgZm9yIHN0cmNweSBmdW5jdGlvbgoKI2RlZmluZSBNQVhfRklMRVMgMTAwCiNkZWZpbmUgQkxPQ0tfU0laRSAxMDI0IC8vIFNpemUgb2YgZWFjaCBibG9jayBpbiBieXRlcwoKLy8gU3RydWN0dXJlIHRvIHJlcHJlc2VudCBhIGZpbGUKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciBuYW1lWzUwXTsKICAgIGludCBzaXplOyAvLyBTaXplIG9mIHRoZSBmaWxlIGluIGJsb2Nrcwp9IEZpbGU7CgovLyBBcnJheSB0byBzdG9yZSBmaWxlcwpGaWxlIGZpbGVzW01BWF9GSUxFU107CgovLyBGdW5jdGlvbiB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgYSBuZXcgZmlsZSBzZXF1ZW50aWFsbHkKaW50IGFsbG9jYXRlU2VxdWVudGlhbChjaGFyIG5hbWVbXSwgaW50IGZpbGVTaXplKSB7CiAgICBpbnQgaSA9IDA7CiAgICBpbnQgdG90YWxTaXplID0gMDsKICAgIAogICAgLy8gQ2FsY3VsYXRlIHRoZSB0b3RhbCBzaXplIG9mIGV4aXN0aW5nIGZpbGVzCiAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0ZJTEVTICYmIGZpbGVzW2ldLnNpemUgIT0gMDsgaSsrKSB7CiAgICAgICAgdG90YWxTaXplICs9IGZpbGVzW2ldLnNpemU7CiAgICB9CiAgICAKICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV3IGZpbGUKICAgIGlmICh0b3RhbFNpemUgKyBmaWxlU2l6ZSA+IE1BWF9GSUxFUyAqIEJMT0NLX1NJWkUpIHsKICAgICAgICBwcmludGYoIk5vdCBlbm91Z2ggc3BhY2UgZm9yIGZpbGUgYWxsb2NhdGlvbi5cbiIpOwogICAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIAogICAgLy8gRmluZCB0aGUgZmlyc3QgYXZhaWxhYmxlIHBvc2l0aW9uIGZvciB0aGUgbmV3IGZpbGUKICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfRklMRVMgJiYgZmlsZXNbaV0uc2l6ZSAhPSAwOyBpKyspOwogICAgCiAgICAvLyBTdG9yZSB0aGUgZmlsZSBpbmZvcm1hdGlvbgogICAgc3RyY3B5KGZpbGVzW2ldLm5hbWUsIG5hbWUpOwogICAgZmlsZXNbaV0uc2l6ZSA9IGZpbGVTaXplOwogICAgCiAgICBwcmludGYoIkZpbGUgJXMgYWxsb2NhdGVkIHN1Y2Nlc3NmdWxseS5cbiIsIG5hbWUpOwogICAgcmV0dXJuIDA7Cn0KCmludCBtYWluKCkgewogICAgLy8gRXhhbXBsZSB1c2FnZQogICAgYWxsb2NhdGVTZXF1ZW50aWFsKCJmaWxlMS50eHQiLCAyKTsKICAgIGFsbG9jYXRlU2VxdWVudGlhbCgiZmlsZTIudHh0IiwgMyk7CiAgICBhbGxvY2F0ZVNlcXVlbnRpYWwoImZpbGUzLnR4dCIsIDEpOwogICAgCiAgICByZXR1cm4gMDsKfQo=