1

Тема: Обробка текстових рядків.Робота з файлами.

Що можна змінити в цьому коді щоб вона виконувала такі умови:Виводила на екран текстовий файл,що містить лише послідовність символів,і переводила в цих рядках символи в їх числове представлення,підраховуючи їх суму.
Безмежно буду вдячний  за любу допомогу чи пораду!)

#include <stdio.h>
#include<string>
void main(void)
{
FILE *fp;
int c,k ;
fp=open ("adres",r+);
while (c=getc(fp)!=EOF)
if (isalpha(c))
k++,
c=read();
putc(c,k,stdout);
fcloose(fp);
}

Bartash: Код слід брати у теги code (пункт 3.2).

2

Re: Обробка текстових рядків.Робота з файлами.

У першу чергу слід виправити синтаксичні помилки, які у даному коді мало не щорядка.

3

Re: Обробка текстових рядків.Робота з файлами.

Здається вийшло розібратись .
Правда чомусь в результаті замість цифр виводить  масті карт,а загало працює, букви заміняє і замінене рахує.

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
void main (void)
{
 int c,k,p;
FILE *f,*fp;
f=fopen ("tratata.txt","w");

fprintf(f,"{respekt drevlyana\n 6864854646 uhuh rakjh}");
fclose(f);
f=fopen("tratata.txt","r+");
fp=fopen("789.txt","w");
if(f==NULL)
{
perror("error");
exit(0);
}
if(fp==NULL)
{
perror("error");
exit(0);
}
k=0;
while((c=fgetc(f))!=EOF)
if (isalpha(c))
{
k++;
c=rand()%10;
fputc(c,fp);
}
else
fputc(c,fp);
fclose(f);
fclose(fp);
fp=fopen("789.txt","r");
while((p=getc(fp))!=EOF)
putc(p,stdout);
fclose(fp);

printf("kilmkist znakiv=%d",k);
}

Re: Обробка текстових рядків.Робота з файлами.

maksymlys, раджу Вам попрацювати над оформленням коду.

5

Re: Обробка текстових рядків.Робота з файлами.

maksymlys написав:

Здається вийшло розібратись .
Правда чомусь в результаті замість цифр виводить  масті карт,а загало працює, букви заміняє і замінене рахує.

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
void main (void)
{
 int c,k,p;
FILE *f,*fp;
f=fopen ("tratata.txt","w");

fprintf(f,"{respekt drevlyana\n 6864854646 uhuh rakjh}");
fclose(f);
f=fopen("tratata.txt","r+");
fp=fopen("789.txt","w");
if(f==NULL)
{
perror("error");
exit(0);
}
if(fp==NULL)
{
perror("error");
exit(0);
}
k=0;
while((c=fgetc(f))!=EOF)
if (isalpha(c))
{
k++;
c=rand()%10;
fputc(c,fp);
}
else
fputc(c,fp);
fclose(f);
fclose(fp);
fp=fopen("789.txt","r");
while((p=getc(fp))!=EOF)
putc(p,stdout);
fclose(fp);

printf("kilmkist znakiv=%d",k);
}

Я не до кінця зрозумів, для чого у вас іде перевірка isalpha(). Текстовий файл на рівні програми - це сукупність
символьних даних, себто кожен символ згідно умов задачі мав би бути перетворений на число для подальшого плюсування.

Масті карт - це символи першого десятка таблиці ASCII, які записуються у вас кодом

fputc(c, fp);

Якщо ви хотіли таким чином записати у файл цифру, то можна це зробити так:

fputc( (char)(48+c), fp);

де 48 - ASCII-код символу '0'.
Але по суті задачі важко відповісти, бо код важко читається.

6

Re: Обробка текстових рядків.Робота з файлами.

maksymlys написав:

Підкажіть будьласка що таке L-вирази???

В окрему тему та відповідний розділ, будь-ласка.