Tag: 复制

在C中跳过了getchar()和scanf()

我目前正在编写一个程序,将一个文件的文本复制或附加到另一个文件中。 当提示用户是否要覆盖或追加文件时,我的问题就出现了,我们都跳过了scanf()和getchar()。 我尝试过使用getchar()和scanf()以及fflush(stdin)的多种组合,并确保我打开的所有文件都很接近,但我仍然无法输入选择。 包含第一个提示的代码的特定部分在这里。 `/****************PROMPT FOR OVERWRITE****************/ printf(“Would you like to overwrite the Destination File?\n”); printf(“1=NO,2=YES=”); scanf(“%d”, &overwriteAnswer); if(overwriteAnswer == 2) { ` 这个scanf()或者当我使用getChar()时,它只是被跳过,并且每次执行代码时通常都会填充不同的负数。 完整代码如下 if((infile = open(argv[1], O_RDONLY)) == 0) { /****************INPUT FILE OPENED****************/ printf(“%s open\n”,argv[1]); if ((outfile = access(argv[1], F_OK)) == 0 ) { /****************PROMPT FOR OVERWRITE****************/ printf(“Would you like to overwrite the […]

在c中复制bmp

背景: 我想将bmp(未压缩的24 RGB)图像从一个文件名复制到另一个文件名。 我正在使用来自TDM-GCC(版本4.9.2,32位,SJLJ)的mingw编译器,它带有代码块。 问题: 程序适用于黑白图像和简单的彩色图像,但不适用于复杂的彩色图像。 请查看附件图片。 我没有足够的声誉来发布其他图片,所以我尝试发布最相关的2。 该程序无法复制lenna图像。 这种行为的原因是什么? 码: #include #include #include #pragma pack(1) /* The following is to access the DIB information https://msdn.microsoft.com/en-us/library/cc230309.aspx https://msdn.microsoft.com/en-us/library/dd183374(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/dd183376(v=vs.85).aspx */ typedef uint8_t BYTE; typedef uint32_t DWORD; typedef int32_t LONG; typedef uint16_t WORD; typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; }BITMAPFILEHEADER; […]

在execlp()之后关闭管道是否必要?

在陈述我的问题之前,我已经阅读了几个关于堆栈溢出的相关问题,例如UNIX中的管道和复制函数 ,以及其他几个,但没有澄清我的困惑。 首先,代码,这是“Beginning Linux Programming”,第4版,第13章的示例代码: #include #include #include #include int main() { int data_processed; int file_pipes[2]; const char some_data[] = “123”; pid_t fork_result; if (pipe(file_pipes) == 0) { fork_result = fork(); if (fork_result == (pid_t)-1) { fprintf(stderr, “Fork failure”); exit(EXIT_FAILURE); } if (fork_result == (pid_t)0) // Child process { close(0); dup(file_pipes[0]); close(file_pipes[0]); // LINE A […]

什么时候通过值?

亲爱的大家。 我想知道是否有一些情况你会有目的地通过C中的值传递一个参数。让我重新说一下。 你什么时候有目的地使用C的大对象传值? 或者,您何时关心对象参数是否完全复制到局部变量中? 编辑 :现在我考虑一下,如果你可以避免指针,那么。 如今,“深度”复制对于小型应用程序中的大部分内容都是可能的,而浅层复制更容易出现指针错误。 也许。

在C中复制每个块的文件块

我正在尝试将文件划分为大小为y(以字节为单位)的x块,以便我可以单独复制每个块。 我怎样才能做到这一点?

sockets之间的管道

我有一个充当镜像的C ++服务器。 什么进入了一个不同的sockets。 现在,它将套接字读入缓冲区并将其写入另一个套接字。 我想提高吞吐量。 我已经读过有关sendfile()和splice() ,但它似乎仅限于“文件到套接字”传输。 也许套接字之间的简单pipe()可以工作。 您有什么推荐的吗? 便携式解决方案将是完美的,但如果它只是Linux,那就没问题了。

如何将位从一个变量复制到另一个变量?

假设我有这个int变量v1 : 1100 1010 而这个变量int v2 : 1001 1110 我需要将v2的最后四位复制到v1的最后四位,以便结果为: 1100 1110 ^ ^ last four bits of v2 | | first four bits of v1 我如何在C或C ++中做到这一点? 我阅读了一些关于按位操作的文章,但我找不到任何具体的信息。

在许多情况下,使用XOR运算符来查找数组中的重复元素会失败

我遇到了一篇文章如何在一个混洗的连续整数数组中找到一个重复的元素? 但后来意识到这很多输入失败了。 例如: arr[] = {601,602,603,604,605,605,606,607} #include int main() { int arr[] = {2,3,4,5,5,7}; int i, dupe = 0; for (i = 0; i < 6; i++) { dupe = dupe ^ a[i] ^ i; } printf ("%d\n", dupe); return 0; } 如何修改此代码,以便可以找到所有案例的重复元素?

memcpy的内部实现如何工作?

标准C函数’memcpy’如何工作? 它必须将(大)RAM块复制到RAM中的另一个区域。 因为我知道你不能在汇编中直接从RAM移动到RAM(使用mov指令)所以我猜它在复制时使用CPU寄存器作为中间存储器? 但它是如何复制的? 通过块(如何通过块复制?),按单个字节(char)或它们具有的最大数据类型(复制在long long double中 – 在我的系统上为12个字节)。 编辑: 好吧显然你可以直接将数据从RAM移动到RAM ,我不是汇编专家,所有我学习的汇编都来自这个文档( X86汇编指南 ),在有关你无法从中移动的mov指令的部分中提及RAM到RAM。 显然这不是真的。

如何在C中将hex数读入无符号整数

我想将文本文件中的hex数读入无符号整数,以便我可以执行机器指令。 它只是一个模拟类型的东西,它查看文本文件内部并根据值及其相应的指令输出寄存器中的新值。 例如,说明将是: 1RXY – >将寄存器R保存为存储器地址XY中的值 2RXY – >将寄存器R保存为XY值 BRXY – >跳转到寄存器R,如果xy是这个等等。 ARXY – > AND在内存地址XY处注册R值 文本文件在新行中包含类似的内容。 (在hex中) 120F B007 290B 我的问题是将每个单独的指令复制到无符号整数…我该怎么做? #include int main(){ FILE *f; unsigned int num[80]; f=fopen(“values.txt”,”r”); if (f==NULL){ printf(“file doesnt exist?!”); } int i=0; while (fscanf(f,”%x”,num[i]) != EOF){ fscanf(f,”%x”,num[i]); i++; } fclose(f); printf(“%x”,num[0]); }