• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana małych liter w duże

0 głosów
418 wizyt
pytanie zadane 11 grudnia 2024 w C i C++ przez adam234345 Początkujący (400 p.)

Hej, mam za zadanie napisać program, który wyświetli tekst z pliku, po czym zamieni wszystkie małe litery tekstu na duże, powinienem użyć chyba do tego fseek, ale nie wiem jak zrobić. Chce to zrobić aby  wyszukać znak małej litery i zamienić go na znak dużej. obecny kod:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include <string.h>




int main()
{
    FILE*plik;
    plik=fopen("plik.txt", "r" );
    char napis[100];

    while( fgets(napis, 100, plik)!=NULL)
    {
    printf("%s", napis);
    }

    printf("\n");


    fclose(plik);








    fclose(plik);


    return 0;

}

 

komentarz 12 grudnia 2024 przez Oscar Nałogowiec (29,360 p.)
Nie mam pojęcia po co funkcja fseek w takim programie. Ona służy do 'skakania' w pliku.

Skoro to jest zwykłe C:

1. zamieniasz pojedyncze literki - bez sensu jest czytać większymi porcjami, chyba że dla wydajności będziesz czytał blokami po parę KB (fread). Czytaj pojedynczymi znakami (fgetc). Będziesz miał jedną prostą pętlę.

2. masz gotową funkcję toupper() (w ctype.h) - która od razu robi to co potrzeba. Znaków, które nie są małymi, literkami nie rusza. Nagłówek ten zawiera cały szereg funkcji kwalifikujących znaki (cyfra, litera, znak hex, biały znak itp).

1 odpowiedź

0 głosów
odpowiedź 11 grudnia 2024 przez WojAbuk Gaduła (3,380 p.)
Każda mała litera to liczba z przedziału 'a' do 'z' i małej na dużą jest prosta jest prosta `duża_litera=mała_litera-'a'+'A'`. Ta metoda nie zadziała dla polskich znaków, ale zwykle jest wystarczająca.
komentarz 11 grudnia 2024 przez adam234345 Początkujący (400 p.)
nie potrzebuje polskich znaków, tylko właśnie nie wiem w jaki sposób to zapisać
komentarz 11 grudnia 2024 przez WojAbuk Gaduła (3,380 p.)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include <string.h>
 
 
 
 
int main()
{
    FILE*plik;
    plik=fopen("plik.txt", "r" );
    char napis[100];
 
    while( fgets(napis, 100, plik)!=NULL)
    {
        for(size_t i=0; napis[i]; i++){
            if('a'<=napis[i] && napis[i]<='z'){
                putchar(napis[i]-'a'+'A');
            }else{
                putchat(napis[i]);
            }
       }   
   }
 
    putchar('\n');
 
 
    fclose(plik);
 
 
 
 
 
 
 
 
    fclose(plik);
 
 
    return 0;
 
}

To powinno wyglądać mniej więcej tak. Jest to kod pisany z ręki nie testowany.

Podobne pytania

0 głosów
2 odpowiedzi 1,495 wizyt
0 głosów
1 odpowiedź 2,708 wizyt
pytanie zadane 27 kwietnia 2015 w C i C++ przez andrzejugdziejestes Początkujący (390 p.)
0 głosów
1 odpowiedź 2,117 wizyt

93,667 zapytań

142,588 odpowiedzi

323,127 komentarzy

63,191 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...