gpt4 book ai didi

c - C语言中如何将一个文件的特定内容复制到另一个文件中?

转载 作者:行者123 更新时间:2023-11-30 15:28:23 25 4
gpt4 key购买 nike

我已经研究了几个小时了,我觉得我没有掌握 C 语言的一些基本技术。我一直在尝试读取特定行并将其从一个文件存储到 2 个单独的文件中。源文件(临时)是我正在读取的文件,而 2 个文件(数据和文本)是我要存储的 2 个文件。

TL;DR,如何将一个文件的内容拆分为两个单独的文件?

例如输入文件为:

.data
A: .word 32
B: .word 16

.text
main:
la $s0 A
lw $s0 0($s0)
la $s1 B
lw $s1 0($s1)

此函数将接收临时文件并将 .data 和 .text 段处理到单独的文件中。

void process_file(FILE * temp) 
{
FILE * data, * text;

char * token;
char * nextLine;
char line[256];
char * str_token = malloc(256 * sizeof(char));
char * str = malloc(256 * sizeof(char));

int i;

data = fopen("data.asm", "w");
text = fopen("text.asm", "w");

if (temp == NULL || data == NULL || text == NULL)
{
printf("UNABLE TO OPEN OR LOCATE FILES. EXITING.\n");
exit(1);
}

while (!feof(temp))
{
if ((nextLine = fgets(line, 256, temp)) != NULL)
{
token = strtok(nextLine, "\n");
//printf("%s", nextLine);

if (token != NULL)
{
strcat(str_token, token);
token = strtok(NULL, "\n");

if ((strstr(str_token, ".data")) != NULL)
{
strcat(str, str_token);
fprintf(data, "%s", str); //ADDING THIS CAUSES A SEG FAULT :(
}
else if ((strstr(token, ".text")) != NULL)
{
fprintf(text, "%s", token);
token = strtok(NULL, "\n");
}
}
}
}
}

谢谢!

最佳答案

void process_file(FILE *temp){
FILE *data, *text, *fp;
char line[256], str[256];
char *token;

data = fopen("data.asm", "w");
text = fopen("text.asm", "w");

if (temp == NULL || data == NULL || text == NULL) {
printf("UNABLE TO OPEN OR LOCATE FILES. EXITING.\n");
exit(1);
}
fp = data;//default for not start with .data and .text
while(fgets(line, sizeof line, temp)){
strcpy(str, line);
if((token=strtok(str, " \t\n"))!=NULL){//not blank line
if(strcmp(token, ".data")==0)
fp = data;
else if(strcmp(token, ".text")==0)
fp = text;
}
fprintf(fp, "%s", line);
}
fclose(data);
fclose(text);
}

关于c - C语言中如何将一个文件的特定内容复制到另一个文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com