Reads a line from a specified file, up to one less than the specified maximum number of characters or up to and including the new-line character, whichever comes first. The string is stored in the argument str.
Syntax:
#include <stdio.h>
char *fgets(char *str, int maxchar, FILE *file_ptr);
Der findes ikke nogen member funktion, om du kender det fra java's .length(), men du kan næsten altid opnå det samme vha. en simpel sizeof() beregning:
int intArray[100]; int intArrayLength = sizeof(intArray) / sizeof(intArray[0]);
PAS PÅ - den holder ikke for variabler der overføres som pointere, altså typisk char arrays.
char charArray[100]; int charArrayLen = sizeof(charArray) / sizeof(charArray[0]);
Denne er OK.
int myFunct(char *array) { int arrayLen = sizeof(array) / sizeof(array[0]); } myFunct(charArray); HOLDER IKKE - charArray er en pointer, og resultatet bliver derfor altid 4. (En pointer er normalt 32-bit, dvs. 4 bytes = 4 char.) Følgende ændring vil fungere:
int myFunct(char *array, int arrayLen) { // arrayLen overføres } myFunct(charArray, sizeof(charArray)/sizeof(charArray[0]));
Brug f.eks. typedef på char array, for at sikre at det fungerer rigtigt.
hvedstrup: hmm du kan ligeså godt beholde pointene og lukke denne tråd.. der ER ingen metode.. men egentlig er dit spørgsmål også ligegyldigt.. hvis du har oprettet det statisk med int array[100].. så ved du at skidtet er 100 ints langt.. sidste item er array[99] fordi du starter med at tælle fra 0.. i dette tilfælde kan du dog bruge sizeof(metoden) men den fortæller dig hvor meget skidtet fylder i BYTES.. det vil sige du kan ikke adressere array[sizeof(array)-1].. det andet tilfælde.. hvis du har oprettet array dynamisk på heapen med malloc() eller new.. well.. igen er det DIG der har oprettet det.. derfor ved du også hvor langt lortet er.. hvad jeg vil frem til er at du kan vente lige så længe du vil.. du får ikke et nyttigt svar på et ligegyldigt spørgsmål.. hvis vi skal hjælpe dig ville det måske være en ide at forklare HVORFOR du skal bruge længden på array'et??
Hey! Hvad er der galt med STD::Vector? (selvfølgelig kun brugbart under Windows) - men den har alle de fordele som et array under Java har. Og der kan du gøre hvad som helst, som fx. at aflæse længden på vectoren - bare slå den op på MSDN :)
Ja, jeg kan også en masse spændende ting i C++, men hvedstrup skrev C hvor der ikke er en STD, der findes forøvrigt masser af implementeringer til C++ compilere at Standard Template Libery (STL) ikke kun til microsoft men til andre compilere.
segmose - du har fuldstændigt ret - jeg læste got spørgsmålet, men da jeg nåede bunden af siden havde jeg åbentbart glemt det totalt :). Til hvedstrup kan jeg jo bare sige: "Glem mit inlæg, det er ikke to potter pis værd når du programmere i C".
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.