C语言复制一行文件到结构体
时间: 2023-09-15 17:21:47 浏览: 116
这个问题有点模糊,不过我猜测你是想把一个文件的内容读入到结构体中。以下是一个示例代码,可以读取一个文本文件(每行包含一个整数和一个字符串)的内容,并将其存储在结构体数组中。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
struct Item {
int id;
char name[MAX_LEN];
};
int main() {
FILE *fp;
char line[MAX_LEN];
struct Item items[MAX_LEN];
int i = 0;
fp = fopen("input.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while (fgets(line, MAX_LEN, fp) != NULL) {
// Parse the line and store the values in the struct
sscanf(line, "%d %s", &items[i].id, items[i].name);
i++;
}
fclose(fp);
// Print the contents of the struct array
for (int j = 0; j < i; j++) {
printf("Item %d: id=%d, name=%s\n", j+1, items[j].id, items[j].name);
}
return 0;
}
```
在这个示例代码中,我们首先定义了一个结构体 `Item`,包含两个成员变量:`id` 和 `name`。然后在 `main` 函数中,我们打开了一个名为 `input.txt` 的文本文件,并逐行读取其内容。每行内容包含一个整数和一个字符串,我们使用 `sscanf` 函数将其解析为 `Item` 结构体,并将其存储在 `items` 数组中。最后,我们遍历 `items` 数组,并将每个结构体的内容打印出来。
请注意,这个代码示例假设输入文件中的每行都是按照正确的格式进行格式化的。如果文件格式不正确,那么 `sscanf` 函数可能会出现问题,导致程序崩溃或者输出错误的结果。为了更鲁棒地处理文件输入,应该添加一些错误检查和异常处理的代码。
阅读全文