On Tue, 16 Jul 2002 at 16:22 (+0200), Volker Kroll wrote:
als C Anfänger (programmiere sonst in Perl oder Java) bin ich gerade auf
ein Problem gestossen.
Wenn ich einem Programm als Parameter einen relativen Pfad übergebe,
kann das Programm damit leben. Wie komme ich jetzt aber an den absoluten
Pfad.
int main(int argc, char *argv[]) {
struct stat buf;
char *filename;
// test if argument submitted
if (argv[1]) {
printf("Starting for the file %s\n", argv[1]);
}
Nur mal interessehalber (bin auch C-Anfänger):
Müsste man nicht zuerst mit argc überprüfen, ob argv[1] überhaupt
existiert, bevor man auf argv[1] zugreift?
,----[ testprogramm.c ]-
| #include
|
| int main (int argc, char *argv[])
| {
| if (argv[1])
| {
| printf("1. Argument: %s\n", argv[1]);
| }
| else
| {
| fprintf(stderr, "Kein 1. Argument übergeben.\n");
| }
|
| printf("1. Argument: %s\n", argv[1]);
| printf("2. Argument: %s\n", argv[2]);
| printf("3. Argument: %s\n", argv[3]);
| printf("4. Argument: %s\n", argv[4]);
|
| return(0);
| }
`----
(Kompilation: gcc -Wall -W -pedantic -ansi -o testprogramm testprogramm.c)¹
Test A: ./test
~~~~~~~~~~~~~~
Kein 1. Argument übergeben.
1. Argument: (null)
2. Argument: PWD=/home/bwalle
3. Argument: LD_HWCAP_MASK=0x20000000
4. Argument: WINDOWID=37748750
Test B: ./test "Argument"
~~~~~~~~~~~~~~~~~~~~~~~~~
1. Argument: Argument
1. Argument: Argument
2. Argument: (null)
3. Argument: PWD=/home/bwalle
4. Argument: LD_HWCAP_MASK=0x20000000
Heißt das jetzt, dass argv[1] nur 'zufällig' genullt ist oder ist das
irgendwo definiert, dass immer argv[argc] genullt ist, obwohl der
Parameter ja im Prinzip nicht existiert.
So gesehen wäre argc überflüssig, man könnte man argv[]
durchprobieren, bis man auf NULL stößt (wäre zwar etwas umständlicher
aber es würde funktionieren.
Gruß,
Bernhard
¹ eigentlich überflüssig, da suse-programming@suse.com !=
suse-linux@suse.com ;-)
--
_________ http://www.bwalle.de _________________________________________________
Ein einzelner Tod ist eine Tragödie.
Eine Million Tote sind eine Statistik.
-- Josif Stalin