C-Problem

Dietmar Guhe dguhe at Mathematik.Uni-Bielefeld.DE
Tue Jun 8 11:49:08 CEST 1999


On Tue, 8 Jun 1999, Kai Windmöller wrote:

> Date: Tue, 08 Jun 1999 11:33:23 +0200
> From: Kai Windmöller <kai.windmoeller at rokd.de>
> To: OWL Linux User Group <linux at lug-owl.de>
> Subject: C-Problem
> 
> Hallo zusammen
> 
> ich muß zur Zeit einen Konverter schreiben und bin beim
> Kommandozeilenauswerten auf folgendeds Problem gestoßen.
> 
> <OUTPUT>
> C:\Tools\TC20\OUT>convert ergre regwregwev w rweg wrtgw
> 
>   0 #C:\TOOLS\TC20\OUT\CONVERT.EXE#-64#
>   1 ##-1#
>   2 #ergre#-34#
>   3 ##-1#
>   4 #regwregwev#-28#
>   5 ##-1#
>   6 #w#-17#
>   7 ##-1#
>   8 #rweg#-15#
>   9 ##-1#
>  10 #wrtgw#-10#
>  11 ##-1#
> C:\Tools\TC20\OUT>
> </OUTPUT>
> 
> erzeug durch folgenden Code
> 
> <CODE>
>    int main (int argc, char argv[])
>     ...
>    for(i=0;i<(2*argc);i++)
>    {
>       printf("\n%3d #%s#%d#",i,argv[i],argv[i]);
>    }
> </CODE>
> 
> Nach meinem Verständnis von C und Kommandozeilen ist dieses Verhalten
> falsch.


Also ich mach da immer noch ein * mit rein, weil argv ein pointer auf
einen pointer ist.

Dann sieht das programm so aus:
#include <stdio.h>

int main (int argc , char* argv[]) {
  
  int i;
  for ( i=0 ; i < argc ; i++ ) {
    printf("\n%3d #%s#%d#",i,argv[i],argv[i]);
  }
}

und hat als output

./a.out ergre regwregwev w rweg wrtgw

  0 #./a.out#536869328#
  1 #ergre#536869336#
  2 #regwregwev#536869342#
  3 #w#536869353#
  4 #rweg#536869355#
  5 #wrtgw#536869360#

Die Zahlen sind natuerlich von System zu System verschieden.

Dietmar

______________________________________________________
Dietmar Guhe  
http://www.mathematik.uni-bielefeld.de/~dguhe/
------------------------------------------------------



More information about the Linux mailing list