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( (char)(48+c), fp);
де 48 - ASCII-код символу '0'.
Але по суті задачі важко відповісти, бо код важко читається.