Работа с файлами Visual studio с++
Код:
# include <stdio.h>
int main ()
{
char n;
FILE *fin;
if((fin=fopen("read.txt","rt"))==0)
{
printf("File can not found");
return 1;
}
while (!feof(fin))
{
fscanf(fin,"%c",&n);
printf("%c",n);
}
fclose(fin);
}
int main ()
{
char n;
FILE *fin;
if((fin=fopen("read.txt","rt"))==0)
{
printf("File can not found");
return 1;
}
while (!feof(fin))
{
fscanf(fin,"%c",&n);
printf("%c",n);
}
fclose(fin);
}
От начала буфера и до конца:
1. start <- позиция начала или current+1, если пришли с шага 3
2. current <- start или current+1, если пришли с шага 3
3. До тех пор, пока current не равно концу буффера и не больше него
если current == числу
current передвигать вперёд до точки. копировать в другой буфер всё от start до current. идти на шаг 1.
иначе current передвинуть на позицию вперёд.
Как-то так.
Читать, кстати, можно и не посимвольно, а сразу блоком или строками. Да, лучше строками, но блоками было бы лучше.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <cctype>
#include <conio.h>
#include <string.h>
FILE *fp_in = NULL, *fp_out = NULL;
const char* filename[2] = { "in.txt", "out.txt" };
if (((fp_in = fopen(filename[0],"r")) != NULL) &&
((fp_out = fopen(filename[1],"w+")) != NULL))
{
int i = 0; char ch = '\0';
char* psz = new char[256];
while ((ch = fgetc(fp_in)) != EOF)
{
if (ch != '.')
{ psz = ch; i++; continue; }
psz[i+1] = '\0';
for (int n = i-1; n >= 0; n--)
if (isdigit(psz[n]))
{
psz = '.';
fputs(psz,fp_out);
break;
}
strcpy(psz,"\0"); i = 0;
}
}
else
{
static char* msg = "\0";
sprintf(msg,"Cannot open file %s\0",filename);
perror(msg);
}
fclose(fp_in);
fclose(fp_out);
#include <stdlib.h>
#include <cctype>
#include <conio.h>
#include <string.h>
FILE *fp_in = NULL, *fp_out = NULL;
const char* filename[2] = { "in.txt", "out.txt" };
if (((fp_in = fopen(filename[0],"r")) != NULL) &&
((fp_out = fopen(filename[1],"w+")) != NULL))
{
int i = 0; char ch = '\0';
char* psz = new char[256];
while ((ch = fgetc(fp_in)) != EOF)
{
if (ch != '.')
{ psz = ch; i++; continue; }
psz[i+1] = '\0';
for (int n = i-1; n >= 0; n--)
if (isdigit(psz[n]))
{
psz = '.';
fputs(psz,fp_out);
break;
}
strcpy(psz,"\0"); i = 0;
}
}
else
{
static char* msg = "\0";
sprintf(msg,"Cannot open file %s\0",filename);
perror(msg);
}
fclose(fp_in);
fclose(fp_out);
--------
Hello.New 2012 year.Workmanship.Hello man of 666.Die Hard.999-444.(222)555-6666.Works.That's all folks
out.txt:
----------
New 2012 year.Hello man of 666.999-444.(222)555-6666.
Код:
# include <stdio.h>
# include <string.h>
int main ()
{
FILE *fin,*fout;
int i,k;
char str [100];
fin=fopen("read.txt","rt");
fout=fopen("write.txt","wt");
if(fin==NULL&&fout==NULL)
{
printf("File can not found");
return 1;
}
while (!feof(fin))
{
i=0;
do
{
fscanf (fin,"%c",&str);
i++;
}while (str[i-1]!='.');
str='\0';
k=0;
for(i=0;i<strlen(str);i++)
if(str=='1')
k=1;
{
if(k==0)
fprintf(fout,"%s\n",str);
}
}
fclose(fin);
fclose(fout);
return 0;
}
# include <string.h>
int main ()
{
FILE *fin,*fout;
int i,k;
char str [100];
fin=fopen("read.txt","rt");
fout=fopen("write.txt","wt");
if(fin==NULL&&fout==NULL)
{
printf("File can not found");
return 1;
}
while (!feof(fin))
{
i=0;
do
{
fscanf (fin,"%c",&str);
i++;
}while (str[i-1]!='.');
str='\0';
k=0;
for(i=0;i<strlen(str);i++)
if(str=='1')
k=1;
{
if(k==0)
fprintf(fout,"%s\n",str);
}
}
fclose(fin);
fclose(fout);
return 0;
}
Код размещенный 11 марта как раз и выполняет поставленную задачу.
Цитата:
из исходного файла программа оставляет только те предложения в которых содержится хотя бы одна единица
Что-то мне подсказывает, что дело в этом:
Код:
if(str=='1')