Tag: 文件

如何用C编程语言检查头文件的有效性

在C编程语言中是否有一种方法可以检查头文件中的函数原型是否与编译时的实际函数定义相对应。 例如,如果我创建头文件,然后更改该头文件中描述的某些函数的签名,如果头文件中有错误的原型,我可以检查编译时间吗? 在编译之前,这是编译器或其他工具的工作吗? 谢谢。

如何在大型输入集中更快地在C中进行这种排序程序

对于非常大的输入文件数据,此排序代码会失败,因为它需要很长时间才能完成。 rewind(ptr); j=0; while(( fread(&temp,sizeof(temp),1,ptr)==1) &&( j!=lines-1)) //read object by object { i=j+1; while(fread(&temp1,sizeof(temp),1,ptr)==1) //read next object , to compare previous object with next object { if(temp.key > temp1.key) //compare key value of object { temp2=temp; //if you don’t want to change records and just want to change keys use three statements temp2.key =temp.key; temp=temp1; […]

从c中读取文件中的数据

我有一个名为prob的txt文件,其中包含: 6 2 8 3 4 98652 914 143 789 1 527 146 85 1 74 8 7 6 3 每行有9个字符,共有9行。 由于我不能在c中创建一个字符串数组,我使用的是二维数组。 仔细运行代码,无限循环很常见,它打印出奇怪的输出。 我也很好奇它在哪里停止接受字符串? 直到换行? 每个“保存”的预期结果:6 2 8 3或含有该行的watever。 #include FILE *prob; main() { prob = fopen(“prob.txt”, “r”); char grid_values[9][9]; char save[9]; int i; for (i = 0; (fscanf(prob, “%s”, save) != EOF); i++) { […]

将文本文件读入C中的行数组中

使用CI想要读取文本文件的内容,以便在完成所有操作时完成一个字符串数组,其中第n个字符串表示文本文件的第n行。 文件的行可以任意长。 什么是实现这一目标的优雅方式? 我知道将一个文本文件直接读入一个适当大小的缓冲区的一些巧妙的技巧,但将其分解成行会使它变得更加棘手(至少就我所知)。 非常感谢!

可以从同一文件描述符的两个线程并行调用fwrite和fclose吗?

如果从同一文件描述符的两个线程并行调用fwrite和fclose会发生什么?

C从文件中删除最后n个字符

我需要使用C代码从文件中删除最后n个字符。 首先我试图使用’\ b’,但它返回一个分段错误。 我在这里和这里看到了类似问题的有趣答案,但我更愿意使用mmap函数来做到这一点,如果可能的话。 我知道通过创建临时文件来截断文件,并将chars写入temp直到原始文件的某个偏移量可能更简单。 问题是我似乎不明白如何使用mmap函数来做到这一点,看不出我需要传递给那个函数的参数,特别是address , length和offset 。 从我读过的内容来看,我应该在flags使用MAP_SHARED在PROT_READ|PROT_WRITE使用PROT_READ|PROT_WRITE 。 函数定义说: void * mmap (void *address, size_t length, int protect, int flags, int filedes, off_t offset) 这是我的主要内容: int main(int argc, char * argv[]) { FILE * InputFile; off_t position; int charsToDelete; if ((InputFile = fopen(argv[1],”r+”)) == NULL) { printf(“tdes: file not found: %s\n”,argv[1]); } […]

c使用lseek以相反的顺序复制文件

我已经有了如何从一开始就将一个文件复制到另一个文件,但是我怎样才能修改程序以相反的顺序复制它? 源文件应具有读访问权和目标文件读写执行权。 我必须使用文件控制库。 例如 FILE A File B should be |———| |———-| |ABCDEF | |FEDCBA | |———| |———-| ** * ** * ** * ** * ** * ** * ** * 更新 * ** * ** * ** * 感谢MikeNakis的提示和建议,Sangeeth为您的代码 我已经重新编写了代码,现在它是以反向顺序打印文件大小的复制字节 这是代码 #include #include #include #include #include #include int main(int argc, char *argv[]) { […]

将排序的多个文件合并为1个已排序的文件

我必须将多个已排序的文件合并为1个已排序的文件。 目前我正在读取每个文件的一个数据条目(12个字节),将最大值写入输出文件并递增我从中复制数据的输入文件的指针,就像合并排序的合并步骤一样。 即 while (n){ //read one data element (12 bytes) //find maximum //write the maximum //increment file pointer containing of file containng maximum } 该过程重复n =约3000000次。 问题是需要花费大量时间(约30秒)。 我想将拍摄时间减少到10秒以下。 关于如何做到的任何想法?

NSSearchPathForDirectoriesInDomains解释混乱

我刚学习这段代码来检查文件是否存在: NSString *path; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@”SomeDirectory”]; path = [path stringByAppendingPathComponent:@”SomeFileName”]; if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { 但我有点困惑。 通过以下行: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 确定我理解方法NSSearchPathForDirectoriesInDomains根据您传递给此方法的参数返回路径。 但是这个用户(编写代码的人)盲目地传递了全class! (参考NSDocumentDirectory,NSUserDOmainMask)。 他唯一正确传递的是BOOL YES。 我检查了苹果文档,它说: NSSearchPathForDirectoriesInDomains创建目录搜索路径列表。 NSArray * NSSearchPathForDirectoriesInDomains ( NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde ); 我在苹果文档中搜索了NSSearchPathDirectory和NSSearchPathDomainMask,他们建议我必须传递一个数字 这表明需要将一个数字传递给方法? 有人可以解释一下这条线吗? 谢谢

在C / C ++中声明和使用FILE *指针的正确方法是什么?

在C / C ++中声明和使用FILE *指针的正确方法是什么? 是应该宣布全球还是本地? 有人能展示一个好榜样吗?