6 svar
22 visningar
Elias93 är nöjd med hjälpen!
Elias93 120
Postad: 21 maj 2019

Konvertera bokstäver till små i sträng i C.

Hej!

"//Convert string to lowercase and return it (i.e. return changed original)
// This uses ASCII codes. The difference between upper case and lower case
// letters is 32 (ASCII code for space). Just need to consider the english alphabet (A-Z)"

char *to_lower(char *str) {
// TODO
int i = 0;
while (str[i] != '\0'){

if( atoi("65") <= str[i] <= atoi("90") ){


/* int a = atoi(&str[i]);
char c = a + 32;
str[i] = c; */
}


i++;
}
return str;
// return -1;
}

 

Fråga: Hur ändrar jag ascii nummret i det aktuella elementet i fältet / arrayen med + 32 och får C att ändå förstå att jag vill ändra bokstäverna?

joculator 1534 – Moderator
Postad: 21 maj 2019

hmmm ... tänk såhär:

du har ett tecken (i en array)
du tar reda på vad det tecknet har för ascii-värde
du plussar värdet med 32
du tar reda på vilket tecken som har det asciivärdet
du retunerar det tecknet

Vill du kan du såklart ändra själva arrayen också och sätta det elementet till tecknet (inte till ascii-värdet)
Vet du hur du ändrar värdet på ett element?

Elias93 120
Postad: 21 maj 2019

Uppgiften är att ändra vad som finns lagrat i varje element, jag kan inte skriva return och så ett nummer utan jag ska ändra värdet på varje elemt som är en stor bokstav till små bokstäver. Jag har skrivit ett if villkor som identifierar stora bokstäver i c. Nu måste jag öka ascii koden på varje elemnt med 32. Hur gör jag det?

Elias93 120
Postad: 21 maj 2019

Det måste finnas ett sätt att mata in ett visst ascii värde på en plats i ett fält så att det är en bokstav.

Elias93 120
Postad: 21 maj 2019

Nu hittade jag en lösning även om det står att int inte alltid får plats i char.

int i = 0;
while (str[i] != '\0'){
int x = str[i];
if( x <=90 && x >= 65 ){

int a = str[i];
int b = a + 32;
char c = b;
str[i] = c;

/* int a = atoi(&str[i]);
char c = a + 32;
str[i] = c; */
}

i++;
}

Laguna 4970
Postad: 21 maj 2019

Du kan använda 'A' i stället för 65 så blir det mera lättläst.

Elias93 120
Postad: 22 maj 2019

ok tack

Svara Avbryt
Close