• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
140 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,340 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,000 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,000 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,344 wizyt
0 głosów
1 odpowiedź 2,554 wizyt
pytanie zadane 27 kwietnia 2015 w C i C++ przez andrzejugdziejestes Początkujący (390 p.)
0 głosów
1 odpowiedź 1,918 wizyt

93,326 zapytań

142,323 odpowiedzi

322,391 komentarzy

62,655 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...