30. juli 2008 - 11:21
Der er
7 kommentarer og 1 løsning
Strenge og deres størrelser
Jeg har følgende program, som udskriver et ord omvendt: int main() { char s[255]; cin >> s; int i; for(i=0; i<strlen(s); i++) { cout << s[strlen(s)-1-i]; } return 0; } Er det hensigtsmæssigt, at jeg sætter størrelsen af s til at værre på 255 tegn? Er det ikke muligt, at størrelsen af s er lig med det indtastede?
Annonceindlæg fra Deloitte
strlen returnerer faktisk laengde ikke kapacitet. sizeof returnerer kapacitet.
Hvis du alligevel bruger C++ boer du overveje at bruge string fremfor char array til strenge.
Ok, det vil jeg gøre. Men hvordan ville man tackle ovenstående problem? Ville man bare lade størrelsen af s være 255?
Ja. Men med string undgaar du at tage stilling til max laengde.
Ok, jeg vil bruge string så. Det virker bare mærkeligt, at brugen af chars ikke er mere dynamisk.. ? Læg også gerne et svar.
i C ville jeg lave det som: #include <stdio.h> #include <string.h> int main() { int i; char s[255]; printf("Enter spring: "); fgets(s, sizeof(s), stdin); for(i = 0; i < strlen(s); i++) { printf("%c", s[strlen(s) - 1 - i]); } printf("\n"); return 0; } og i C++ som: #include <iostream> #include <string> using namespace std; int main() { cout << "Enter spring: "; string s; getline(cin, s); for(int i = 0; i < s.length(); i++) { cout << s[s.length() - 1 - i]; } cout << endl; return 0; }
C char array er opfundet i 1972. Det var foerst i 1980'erne at mainstream languages skiftede fra fast laengde strenge til variabel laengde strenge.
Kurser inden for grundlæggende programmering