z: printf("输入你要更新的文件名(长度不超过10):"); scanf("%s",fileName); if(strlen(fileName)>10) { printf("文件名过长,请重新"); goto re; } for(int i=0;i<10;i++) { if(strcmp(F[i].name,fileName)==0) { record=i; for(int j=0;j<strlen(fileName);j++)//清空文件名 { F[i].name[j]='\0'; } pos = F[i].pos; filesize = F[i].size; F[i].pos = -1;//文件位 break; } }
时间: 2023-06-21 14:15:49 浏览: 147
这段代码实现了更新文件的功能。首先使用 `scanf()` 函数获取用户输入的文件名 `fileName`,并使用 `strlen()` 函数检查文件名长度是否超过 10 个字符。如果超过,则输出提示信息,使用 `goto` 语句返回标签 `re`,重新输入文件名。
接着,使用一个循环遍历文件数组 `F`,查找要更新的文件。如果找到了该文件,则记录文件的编号到变量 `record` 中,并使用另一个循环将该文件名清空,将文件数组 `F` 对应位置的 `name` 成员变量重置为初始值。
然后,将文件的位置记录到变量 `pos` 中,并将文件的大小记录到变量 `filesize` 中。同时,将文件数组 `F` 对应位置的 `pos` 成员变量重置为 -1,表示该位置空闲。使用 `break` 语句退出循环,因为已经找到了要更新的文件,不需要继续遍历文件数组。
相关问题
re: printf("删除文件\n"); printf("输入你要删除的文件名(长度不超过10):"); scanf("%s",fileName); if(strlen(fileName)>10) { printf("文件名过长,请重新"); goto re; } for(int i=0;i<10;i++) { if(strcmp(F[i].name,fileName)==0) { record=i; for(int j=0;j<strlen(fileNa
这段代码实现了删除文件的功能。首先使用 `goto` 语句实现了一个简单的输入检查,要求文件名长度不超过 10 个字符。如果输入不符合要求,则返回标签 `re` 重新输入。
然后,使用一个循环遍历文件数组 `F`,查找要删除的文件。如果找到了该文件,则记录文件的编号到变量 `record` 中,并使用另一个循环遍历磁盘,找到该文件的位置和大小,并将磁盘对应位置的数据清空,同时将文件数组 `F` 对应位置的成员变量重置为初始值。
需要注意的是,该函数中没有对空闲块进行管理,删除文件后留下的空闲块将不会被合并。
void secondpart() { char fileName[10],content[50]; int record=-1, count=0, i=0;//record 用来记录文件的编号,编号范围是0-9,-1时还未找到存放位置 system("cls"); re: printf("创建文件\n"); printf("输入文件名(长度不超过10):"); scanf("%s", fileName); if(strlen(fileName)>10) { printf("文件名过长,请重新"); goto re; } for(int i=0;i<10;i++) { if(strcmp(F[i].name, fileName)==0) { printf("该文件名已存在,请重新"); goto re; } if(F[i].pos==-1&&record==-1)//record不为-1时已经找到 { record = i;// 记录文件的编号 } } for(int j=0;j<strlen(fileName);j++) { F[record].name[j]=fileName[j];//把输入的文件名记录下来 }
这段代码定义了一个函数 `secondpart()`,该函数用于创建文件。
函数首先清空控制台界面,然后定义了一些变量。其中包括文件名 `fileName` 和文件内容 `content`,以及一个记录文件编号的变量 `record`,一个记录文件大小的变量 `count`,和一个循环计数器 `i`。
接着,使用 `goto` 语句实现了一个简单的输入检查,要求文件名长度不超过 10 个字符,并且文件名不能与已有文件重复。如果输入不符合要求,则返回标签 `re` 重新输入。
然后,使用一个循环遍历文件数组 `F`,查找是否有空闲的文件位置,并记录编号到变量 `record` 中。
接下来,使用一个循环将输入的文件名记录到文件数组 `F` 对应位置的 `name` 成员中。
需要注意的是,该函数并没有实现将文件内容写入磁盘的功能,也没有对文件大小进行处理。
阅读全文