Data_Structure/作業/老師程式/recursive-check-path.c

58 lines
1.9 KiB
C
Raw Permalink Normal View History

2025-01-20 21:30:53 +08:00
/*
Program: recursive-check-path.c
Function: <EFBFBD>H<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>_<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ī<EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>Ī<EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>׽u<EFBFBD>έY<EFBFBD>z<EFBFBD>^<EFBFBD>Ʀr<EFBFBD><EFBFBD><EFBFBD>զ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>]isValidPath()<EFBFBD>M<EFBFBD>d<EFBFBD>˵<EFBFBD><EFBFBD>D<EFBFBD>^<EFBFBD>Ʀr<EFBFBD><EFBFBD>(<EFBFBD>׽u)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>Ѿl<EFBFBD><EFBFBD><EFBFBD>^<EFBFBD>Ʀr<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>checkPathChar()
<EFBFBD>B<EFBFBD>z<EFBFBD>A<EFBFBD><EFBFBD>checkPathChar()<EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>o<EFBFBD>{<EFBFBD>׽u<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>N<EFBFBD>I<EFBFBD>sisValidPath()<EFBFBD>A<EFBFBD>z<EFBFBD>L<EFBFBD>o<EFBFBD>G<EFBFBD>Ө<EFBFBD><EFBFBD><EFBFBD>۩I<EFBFBD>s<EFBFBD>A<EFBFBD>F<EFBFBD><EFBFBD>
<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĪG
Note: <EFBFBD><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><EFBFBD>ChatGPT<EFBFBD><EFBFBD><EFBFBD>ͲĤ@<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΨҡA<EFBFBD><EFBFBD><EFBFBD>Ѯv<EFBFBD>A<EFBFBD>[<EFBFBD>H<EFBFBD>X<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>A<EFBFBD>ƧU<EFBFBD>P<EFBFBD>Ǵx<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H
*/
#include <stdio.h>
#include <string.h>
int isValidPath(char *path);
int checkPathChar(char *path);
int isValidPath(char *path) {
if (path[0] == '\0')
return 0; //<2F>^<5E><>0<EFBFBD>A<EFBFBD>N<EFBFBD><4E>path<74><68>"<22>L<EFBFBD><4C>"<22><><EFBFBD>|
else if (path[0] == '/')
return checkPathChar(path+1); //<2F><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>path+1<>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>O<EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>|
else if (isalnum(path[0]))
return checkPathChar(path); //<2F>I<EFBFBD>scheckPathChar()<29>˵<EFBFBD>path<74>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>O<EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>|
else
return 0; //<2F>^<5E><>0<EFBFBD>A<EFBFBD>N<EFBFBD><4E>path<74><68>"<22>L<EFBFBD><4C>"<22><><EFBFBD>|
}
int checkPathChar(char *path) {
if (path[0] == '\0')
return 1; //<2F>^<5E><>1<EFBFBD>A<EFBFBD>N<EFBFBD><4E>path<74><68>"<22><><EFBFBD><EFBFBD>"<22><><EFBFBD>|
else if (isalnum(path[0])) //<2F><><EFBFBD>Upath<74><68><EFBFBD><EFBFBD><EFBFBD>^<5E>Ʀr<C6A6><72><EFBFBD>A<EFBFBD>h<EFBFBD>~<7E><><EFBFBD>I<EFBFBD>scheckPathChar<61>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>U<EFBFBD>Ӫ<EFBFBD><D3AA>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>_<EFBFBD>ŦX
return checkPathChar(path+1);
else if ((path[0] == '/') && (path[1] != '/')) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>{"//"
return isValidPath(path+1);
else
return 0; //<2F>^<5E><>0<EFBFBD>A<EFBFBD>N<EFBFBD><4E>path<74><68>"<22>L<EFBFBD><4C>"<22><><EFBFBD>|
}
int main() {
char *paths[] = {
"/home/user/docs", //<2F><><EFBFBD><EFBFBD>
"/home/user//docs", //<2F>L<EFBFBD><4C>(<28>t<EFBFBD><74><EFBFBD>s<EFBFBD><73><EFBFBD>G<EFBFBD>ӥ<EFBFBD><D3A5>׽u'/'<27>Ÿ<EFBFBD>)
"/home/user/abc!", //<2F>L<EFBFBD><4C>(<28>]<5D>t<EFBFBD>D<EFBFBD>^<5E>Ʀr<C6A6><72>)
"/documents", //<2F><><EFBFBD><EFBFBD>
"!valid/start", //<2F>L<EFBFBD><4C>
"/home/1234" //<2F><><EFBFBD><EFBFBD>
};
int i, count = sizeof(paths)/sizeof(paths[0]);
for (i = 0; i < count; i++)
if (isValidPath(paths[i]))
printf("\"%s\" <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>| <20><>\n",paths[i]);
else
printf("\"%s\" <20>D<EFBFBD><44><EFBFBD>ĸ<EFBFBD><C4B8>| X\n",paths[i]);
return 0;
}