如何分离出cat<1.txt>2.txt>3.txt的各部分
需要将char command="cat<1.txt>2.txt>3.txt" 分离成 cat < 1.txt > 2.txt > 3.txt 共7个部分,并且将1.txt存入char * input_file中,将2.txt和3.txt存入char* output_file中 可以使用strtok函数将字符串分割成各个部分,具体实现如下:
char command = "cat<1.txt>2.txt>3.txt";
char* input_file;
char* output_file1;
char* output_file2;
char* token = strtok(command, "<>"); // 使用<和>作为分隔符
int count = 0;
while (token != NULL) {
switch (count) {
case 0:
// 第一个部分为cat,可以忽略
break;
case 1:
// 第二个部分为输入文件名
input_file = token;
break;
case 2:
// 第三个部分为输出文件名1
output_file1 = token;
break;
case 3:
// 第四个部分为输出文件名2
output_file2 = token;
break;
default:
// 多余的部分可以忽略
break;
}
token = strtok(NULL, "<>"); // 继续寻找下一个分隔符
count++;
}
这样就可以将字符串分割成7个部分,其中第1个部分为cat,可以忽略,第2个部分为输入文件名,第3和4个部分为输出文件名。将它们分别存入对应的变量中即可。 本帖最后由 jackz007 于 2023-9-26 21:48 编辑
#include <stdio.h>
#include <string.h>
int main(void)
{
char command="cat<1.txt>2.txt>3.txt" , input_file , output_file , component ;
int i , k , m ;
for(i = m = 0 ; command ;) {
for(k = 0 ; command && command != '<' && command != '>' ; ) component = command ;
component = '\0' ;
if(command) {
component = command ;
component = '\0' ;
m += 2 ;
}
}
m ++ ;
strcpy(input_file , component) ;
strcpy(output_file , component) ;
strcpy(output_file , component) ;
printf(" input_file is : %s\n" , input_file) ;
printf("output_file is : %s , %s\n" , output_file , output_file) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
input_file is : 1.txt
output_file is : 2.txt , 3.txt
D:\\C>
页:
[1]