• 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

42 Warsaw Coding Academy
0 głosów
155 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,140 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,140 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,386 wizyt
0 głosów
1 odpowiedź 2,594 wizyt
pytanie zadane 27 kwietnia 2015 w C i C++ przez andrzejugdziejestes Początkujący (390 p.)
0 głosów
1 odpowiedź 1,951 wizyt

93,389 zapytań

142,386 odpowiedzi

322,549 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...