У меня проблемы с открытием файла, и я не знаю, почему он не работает.Как получить доступ к файлу, если пользователь вводит путь к файлу и выполняет ли арифметические операции над содержимым файла?
Скажите, есть ли у вас файл с именем add.txt
, а содержание - 23 и 54, программа возьмет у вас путь к файлу, а затем откроет его и добавит эти два числа.
Он работал для меня, пока я не работал над целыми числами только в своем файле. но я не могу разобрать путь к файлу здесь. Вот мой код,
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int i=0,j,k=0,l,sum=0;
char a[200];
char *ptr;
int b[20];
b[0]=0;
char c[200];
fgets(c,sizeof(c),stdin);
j=strlen(c);
ptr=(char*)malloc(j*sizeof(char));
if(ptr==NULL)
{
printf("insufficient space");
exit(1);
}
for(l=0;l<=j;l++)
{
*(ptr+l)=c[l];
}
printf("%s",ptr);
FILE *f;
f=fopen("ptr","r");
while(!feof(f))
{
fscanf(f,"%c",&a[i]);
i++;
}
for(l=0;l<i-1;l++)
{
if(a[l]>=48&&a[l]<=57)
b[k]=b[k]*10+a[l]-'0';
else if(a[l]==10)
{
k++;
b[k]=0;
}
else
{
printf("invalid input");
return 0;
}
}
for(k=0;b[k]!='\0';k++)
{
sum=sum+b[k];
}
printf("%d",sum);
free(ptr);
return 0;
}
Вы передаете строковый литерал '' ptr '' '' fopen() ', а не указатель char * ptr *. Я думаю, вы также пишете 1 за концом буфера, на который указывает * ptr *, иначе у вас есть UB. –
Я передаю ptr, а ptr держит строку c. поэтому это должно быть имя файла. –
'for (l = 0; l <= j; l ++)' → 'for (l = 0; l