C语言使用sscanf在1.txt.gz.aes中取出1.txt.gz且能1.txt.aes中取出1.txt该如何操作
时间: 2025-01-29 10:11:48 浏览: 34
在C语言中,`sscanf`函数用于从字符串中读取格式化的数据。要从文件名中提取出特定的部分,可以使用`strstr`函数找到特定子字符串的位置,然后使用`strncpy`或`memcpy`复制所需的部分。
假设我们有一个文件名`"1.txt.gz.aes"`,我们希望提取出`"1.txt.gz"`和`"1.txt"`。以下是一个示例代码,展示了如何操作:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
const char *filename = "1.txt.gz.aes";
char baseFilename[100];
char intermediateFilename[100];
// 提取1.txt.gz
char *aesExt = strstr(filename, ".aes");
if (aesExt != NULL) {
strncpy(baseFilename, filename, aesExt - filename);
baseFilename[aesExt - filename] = '\0'; // Null-terminate the string
} else {
strcpy(baseFilename, filename);
}
printf("Base filename: %s\n", baseFilename);
// 提取1.txt
char *gzExt = strstr(baseFilename, ".gz");
if (gzExt != NULL) {
strncpy(intermediateFilename, baseFilename, gzExt - baseFilename);
intermediateFilename[gzExt - baseFilename] = '\0'; // Null-terminate the string
} else {
strcpy(intermediateFilename, baseFilename);
}
printf("Intermediate filename: %s\n", intermediateFilename);
return 0;
}
```
这段代码的逻辑如下:
1. 使用`strstr`找到`.aes`子字符串的位置,并复制从开始到`.aes`之前的内容到`baseFilename`。
2. 再次使用`strstr`找到`.gz`子字符串的位置,并复制从开始到`.gz`之前的内容到`intermediateFilename`。
这样,`baseFilename`将包含`"1.txt.gz"`,而`intermediateFilename`将包含`"1.txt"`。
阅读全文
相关推荐

















