Avatar billede hclarsen Nybegynder
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?
Avatar billede arne_v Ekspert
30. juli 2008 - 15:00 #1
strlen returnerer faktisk laengde ikke kapacitet.

sizeof returnerer kapacitet.
Avatar billede arne_v Ekspert
30. juli 2008 - 15:01 #2
Hvis du alligevel bruger C++ boer du overveje at bruge string fremfor char array
til strenge.
Avatar billede hclarsen Nybegynder
30. juli 2008 - 15:05 #3
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?
Avatar billede arne_v Ekspert
30. juli 2008 - 15:35 #4
Ja.

Men med string undgaar du at tage stilling til max laengde.
Avatar billede hclarsen Nybegynder
30. juli 2008 - 20:17 #5
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.
Avatar billede arne_v Ekspert
30. juli 2008 - 20:21 #6
svar
Avatar billede arne_v Ekspert
30. juli 2008 - 20:28 #7
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;
}
Avatar billede arne_v Ekspert
30. juli 2008 - 20:30 #8
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.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester