使用c++语言提取一个文本文件中的数值,将它们写入另一个新文件,由空白或其他字符分开的数字被认为是不同的数值
时间: 2023-05-29 09:03:06 浏览: 57
以下是使用C语言提取文本文件中数值的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
FILE *input_file, *output_file;
char input_filename[50], output_filename[50], c;
int num, is_num = 0;
// 打开输入文件
printf("Enter the input filename: ");
scanf("%s", input_filename);
input_file = fopen(input_filename, "r");
if (input_file == NULL) {
printf("Error opening input file.\n");
exit(1);
}
// 打开输出文件
printf("Enter the output filename: ");
scanf("%s", output_filename);
output_file = fopen(output_filename, "w");
if (output_file == NULL) {
printf("Error opening output file.\n");
exit(1);
}
// 逐个读取输入文件中的字符,并提取数字
while ((c = fgetc(input_file)) != EOF) {
if (isdigit(c)) {
is_num = 1;
num = num * 10 + (c - '0');
} else if (is_num) {
fprintf(output_file, "%d ", num);
num = 0;
is_num = 0;
}
}
// 如果最后一个字符是数字,则要将其写入输出文件中
if (is_num) {
fprintf(output_file, "%d ", num);
}
// 关闭文件
fclose(input_file);
fclose(output_file);
return 0;
}
```
该代码首先要求用户输入输入文件和输出文件的文件名,然后打开这两个文件。接着,它逐个读取输入文件中的字符,并判断这个字符是否是数字。如果是数字,则将其加入到一个整数变量中;如果不是数字且之前读取的字符中包含数字,则将这个数字写入输出文件中。最后,如果最后一个字符是数字,则将其写入输出文件中。
需要注意的是,该代码假设输入文件中每个数字之间都由空格或其他字符分开。如果有两个数字之间没有空格或其他字符,则它们将被认为是同一个数字。如果需要进一步处理这种情况,可以在代码中进行修改。