История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
dron@gnu:~$ dir1=/tmp/000/1/1/1/1
dron@gnu:~$ dir2=/tmp/000/1/1/1/2
dron@gnu:~$ dir3=/tmp/000/2/1/1/1
dron@gnu:~$ gcc main.c
dron@gnu:~$ cmd=./a.out
dron@gnu:~$ result=$($cmd "$dir1" "$dir2" "$dir3")
dron@gnu:~$ echo $result
/tmp/000/
dron@gnu:~$
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Need minimum 2 argumets\n");
return 1;
}
if(argc == 2)
{
printf("%s\n",argv[1]);
return 2;
}
char basepath[PATH_MAX]="";
const size_t first_len = strlen(argv[1]);
for (size_t j = 0; j < first_len; j++ )
{
for (size_t i = 2; i < argc; i++ )
{
if(argv[1][j] == argv[i][j])
{
basepath[j]=argv[1][j];
}else{
char * pwd = strrchr(basepath,'/');
*(pwd+1)='\0';
printf("%s\n",basepath);
return 0;
}
}
}
printf("%s\n",basepath);
return 0;
}
Исправление LINUX-ORG-RU, :
dron@gnu:~$ dir1=/tmp/000/1/1/1/1
dron@gnu:~$ dir2=/tmp/000/1/1/1/2
dron@gnu:~$ dir3=/tmp/000/2/1/1/1
dron@gnu:~$ gcc main.c
dron@gnu:~$ cmd=./a.out
dron@gnu:~$ result=$($cmd "$dir1" "$dir2" "$dir3")
dron@gnu:~$ echo $result
/tmp/000/
dron@gnu:~$
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Need minimum 2 argumets\n");
return 1;
}
if(argc == 2)
{
printf("%s\n",argv[1]);
return 2;
}
char basepath[PATH_MAX]="";
const size_t first_len = strlen(argv[1]);
for (size_t j = 0; j < first_len; j++ )
{
for (size_t i = 2; i < argc; i++ )
{
if(argv[1][j] == argv[i][j])
{
basepath[j]=argv[1][j];
}else{
char * pwd = strrchr(basepath,'/');
*(pwd+1)='\0';
printf("%s\n",basepath);
return 0;
}
}
}
return 0;
}
Исходная версия LINUX-ORG-RU, :
dron@gnu:~$ dir1=/tmp/000/1/1/1/1
dron@gnu:~$ dir2=/tmp/000/1/1/1/2
dron@gnu:~$ dir3=/tmp/000/2/1/1/1
dron@gnu:~$ gcc main.c
dron@gnu:~$ cmd=./a.out
dron@gnu:~$ result=$($cmd "$dir1" "$dir2" "$dir3")
dron@gnu:~$ echo $result
/tmp/000/
dron@gnu:~$
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Need minimum 2 argumets\n");
return 1;
}
if(argc == 2)
{
printf("%s\n",argv[1]);
return 2;
}
char basepath[PATH_MAX]="";
const size_t first_len = strlen(argv[1]);
for (size_t j = 0; j < first_len; j++ )
{
for (size_t i = 2; i < argc; i++ )
{
if(argv[1][j] == argv[i][j])
{
basepath[j]=argv[1][j];
}else{
basepath[j]='\0';
printf("%s\n",basepath);
return 0;
}
}
}
return 0;
}