gpt4 book ai didi

c - C 中的 Unix 路径解析

转载 作者:行者123 更新时间:2023-11-30 17:10:47 25 4
gpt4 key购买 nike

我目前正在上操作系统类(class)。我们的项目之一涉及创建一个简单的 shell。这涉及解析该行并解析路径。所以我需要考虑类似 ~ 的事情。 ../等等..现在我正在尝试编写一个代码来轻松解析“..”——父目录。

这是我到目前为止的代码。我的目标是找到 .. 的出现,然后保存字符串的后半部分(如果有),然后删除 .. 以及它之前的第二个“/”。例如我们有:/1/2/3/../../4/5/6我的目标是,在 .. 的第一个位置保存/../4/5/6然后保存1/2并连接。然后它应该找到下一个..并将/4/5/6保存到后半部分前半部分应该保存/1

void expandParentDirectory (){

char firstHalf[ 255 ];
char secondHalf[ 255 ];

for( int i = 1; i < tokenSize; i++ ){

// checking token list for appearance of ".."
////// tests
size_t len = strlen(parsedArguments[i]);
printf("string length is: %lu \n", len);

for(int j = 0; j < strlen(parsedArguments[i]); ++j){
if(parsedArguments[ i ][ j ] == '.' )
if(parsedArguments[ i ][ j + 1 ] == '.' ){

if(parsedArguments[ i ][ j + 2 ] != '\0' ){
strcpy(secondHalf, &parsedArguments[ i ] [ j + 2 ]);
}
// code to expand PWD and move up a directory
// if (j == 0) {}

for (int k = j - 2 ; k > 0 ; k--) {
if( parsedArguments[ i ][ k ] == '/' ){
strncpy( firstHalf, parsedArguments[ i ], k );
//firstHalf[ k ] = '\0';

free ( parsedArguments[ i ]);
parsedArguments[ i ] = strdup( strcat( firstHalf, secondHalf
}
}
));


}
}
}
}

关于使其正常工作有什么建议吗?关于更好的方法有什么建议吗?谢谢!

最佳答案

库函数realpath将为您执行此操作:http://man7.org/linux/man-pages/man3/realpath.3.html

关于c - C 中的 Unix 路径解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719523/

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