/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
returnere nogle variabler
Fra : Mikkel Bundgaard


Dato : 20-03-04 17:50

Mit mål er at lave et program som skal hente nogle data fra filen
/etc/passwd og ligge dem op i et array struct.[id,navn,home]. Bagefter
skal den for hvert navn undersøge hvormeget disk plads der bruges i
folderen [home]/Maildir og returnere en mail hvis den overstiger fx 100mb.

Filen bruger :(kolon) separering, og i php findes komandoen split() til
den slags. Findes noget tilsvarende i ANSI C.

Da jeg ikke kunne finde dette ville jeg lave min egen funktion. Og her
løber jeg ind i problemer. Alle kender vel kommandoen scanf("%d",&i);
Normalt bruger man return for enden af sin funktion til at returnere en
variabel tilbage, men fx med scanf() bliver inputtet fra tastaturet læst
op i &i. Hvordan gøres dette? Det kunne jeg godt bruge til min egen
funktion txtsplit().

Håber nogen forstår mine spørgsmål

Hilsen Mikkel


 
 
Jesper Krogh (20-03-2004)
Kommentar
Fra : Jesper Krogh


Dato : 20-03-04 17:59

I dk.edb.programmering.c, skrev Mikkel Bundgaard:
> Filen bruger :(kolon) separering, og i php findes komandoen split() til
> den slags. Findes noget tilsvarende i ANSI C.

strchr

> Da jeg ikke kunne finde dette ville jeg lave min egen funktion. Og her
> løber jeg ind i problemer. Alle kender vel kommandoen scanf("%d",&i);
> Normalt bruger man return for enden af sin funktion til at returnere en
> variabel tilbage, men fx med scanf() bliver inputtet fra tastaturet læst
> op i &i. Hvordan gøres dette? Det kunne jeg godt bruge til min egen
> funktion txtsplit().
> Håber nogen forstår mine spørgsmål

Jeg har et.. Hvorfor bruger du C og ikke shell eller perl til det?

Du får lige denne bash-ting med på vejen:
for i in $( cat /etc/passwd | cut -d: -f6 );
do if [ -e $i/Maildir ]; then
du -sh $i/Maildir;
fi ;
done



--
../Jesper Krogh, jesper@krogh.cc, Jabber ID: jesper@jabbernet.dk
Jabber - Det eneste instant messaging system der sikrer DIT privatliv.


Mikkel Bundgaard (20-03-2004)
Kommentar
Fra : Mikkel Bundgaard


Dato : 20-03-04 19:23

Jesper Krogh wrote:
>
>
> strchr

thankyou

>
>
> Jeg har et.. Hvorfor bruger du C og ikke shell eller perl til det?

Mest fordi jeg er ved at lære at programmere C. Jeg ender nok med at
anvende dit forslag, men først når jeg har lavet det i C

Så andre som har et forslag

>
> Du får lige denne bash-ting med på vejen:
> for i in $( cat /etc/passwd | cut -d: -f6 );
> do if [ -e $i/Maildir ]; then
> du -sh $i/Maildir;
> fi ;
> done
>
>


Hilsen Mikkel


Bertel Lund Hansen (20-03-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 20-03-04 20:06

Jesper Krogh skrev:

>> Filen bruger :(kolon) separering, og i php findes komandoen split() til
>> den slags. Findes noget tilsvarende i ANSI C.

>strchr

Den kan slet ikke det som split() kan i PHP. Split afleverer et
array med hele strengen pænt opdelt ved de(t) ønskede tegn.

Strchr() kan kun finde positionen af et tegn i en streng.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Per Abrahamsen (23-03-2004)
Kommentar
Fra : Per Abrahamsen


Dato : 23-03-04 11:36

Bertel Lund Hansen <nospamius@lundhansen.dk> writes:

> Jesper Krogh skrev:
>
>>> Filen bruger :(kolon) separering, og i php findes komandoen split() til
>>> den slags. Findes noget tilsvarende i ANSI C.
>
>>strchr
>
> Den kan slet ikke det som split() kan i PHP. Split afleverer et
> array med hele strengen pænt opdelt ved de(t) ønskede tegn.
>
> Strchr() kan kun finde positionen af et tegn i en streng.

Ja, men det er nok den funktion, om nogen, man oftest vil anvende til
at implementere kolon separering i C.

Byrial Jensen (20-03-2004)
Kommentar
Fra : Byrial Jensen


Dato : 20-03-04 19:56

Mikkel Bundgaard wrote:
> Mit mål er at lave et program som skal hente nogle data fra filen
> /etc/passwd og ligge dem op i et array struct.[id,navn,home].

Det findes der en standard (POSIX) funktion til at gøre. Kig på
getpwnam(3) og getpwuid(3).

> Filen bruger :(kolon) separering, og i php findes komandoen split() til
> den slags. Findes noget tilsvarende i ANSI C.

Det der kommer tættest på i C89, er funktionen strtok(3). Men det er
ikke en funktion jeg vil anbefale. Den kan ikke bruges med konstante
strenge da den ændrer dens input-streng.

> Da jeg ikke kunne finde dette ville jeg lave min egen funktion. Og her
> løber jeg ind i problemer. Alle kender vel kommandoen scanf("%d",&i);
> Normalt bruger man return for enden af sin funktion til at returnere en
> variabel tilbage, men fx med scanf() bliver inputtet fra tastaturet læst
> op i &i. Hvordan gøres dette? Det kunne jeg godt bruge til min egen
> funktion txtsplit().

Du kan bruge sscanf(3) som læser fra en streng, hvis du vil lave din
egen version af getpwnam(3).


Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste