Для выполнения задания я должен создать 2 файла, каждый из которых содержит более 100 цифр.Я могу сделать это хорошо, но когда приходит время выяснить, сколько именно цифр в файле, я озадачен, я попробовал fgets (), но я не думаю, что справляюсь с этим хорошо.Любая помощь будет принята с благодарностью.
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include <stdio.h>
int getc(FILE *stream);
int getchar(void);
Это не является обязательным условием для моей проблемы, но это часть моего кода, в конце концов мне потребуется получить размер каждого числа и передать их в качестве параметров здесь:
int * add(int * a,int s_a,int * b,int s_b){
if(s_b<s_a){
int tmp_s;
int * tmp_a;
tmp_s=s_a;
s_a=s_b;
s_b=tmp_s;
tmp_a=a;
a=b;
b=tmp_a;
}
int * out= (int *)malloc (sizeof(int)*(s_b+1));
int i, carry,sum;
carry=0;
for(i=0;i<s_a;i++){
sum=((a[i])+b[i]%10)+carry;
carry=(a[i]+b[i])/10;
out[i]=sum;
}
for(i;i<s_b;i++){
sum=(b[i]+carry)%10;
carry=(b[i]+carry)/10;
out[i]=sum;
}
out[i]=carry;
return out;
}
Здесь я добавляю случайные числа в файл и работаю, я не добавляю пробелы, потому что все они должны быть одним очень длинным числом.Хотя у меня есть размер этой функции, который не является целью этой функции, и оператор печати будет закомментирован, как только следующая функция будет работать правильно.
void addrandomNums(char * fileName){
srand ( time(NULL) );
FILE *ffp;
ffp=fopen(fileName,"w");//if the file exsisists then we erase and write
new stuff
int sizeOfNum=rand()%10000+100;//the size of the number will be from 100-10099(I think)the instructions said a number greater than 100 digits so I tried to make this as wide of a range as possible
printf("Size of the number for this file is: %d digits \n",sizeOfNum);
for(int i=1;i<sizeOfNum;i++){
fprintf(ffp,"%d", rand() % 10);//adds a number from 0-9
}
fclose(ffp);
}
Эта функция, которая нуждается в помощи, я делаюне знаю, что я делаю не так.
int getNumDigits(char * fileName){
int numDigits=0;
FILE *fp=fopen(fileName,"w");
printf( "Reading the file: %s \n" ,fileName) ;
if (fp == NULL)
printf("The file is not found!!");
return 0;
do
{
// Taking input single character at a time
char c = fgetc(fp);
// Checking for end of file
if (feof(fp))
break ;
printf("%c", c);
numDigits++;
} while(1);
fclose(fp);
printf("***The number of characters present in file is: %d \n",numDigits);
//getch();
return numDigits;
}
int main(void) {
addrandomNums("num1.txt");
addrandomNums("num2.txt");
int size1=getNumDigits("num2.txt");
return 0;
}
Спасибо всем за помощь, это исправленный код.Я действительно ценю помощь.
int getNumDigits(char * fileName){
int numDigits=0;
FILE *fp=fopen(fileName,"r");
printf( "Reading the file: %s \n" ,fileName) ;
//char buffer[MAX]=fgets()
// int length=strlen(fgets(buffer, MAX, fp));
if (fp == NULL)
printf("The file is not found!!");
char c;
do{
// Taking input single character at a time
c = fgetc(fp);
// Checking for end of file
if (feof(fp)){
numDigits++;
break ;
}
numDigits++;
} while(1);
fclose(fp);
printf("***The number of characters present in file is: %d \n",numDigits);
printf("All Done.");
return numDigits;
}