30/09/2018, 17:39
Làm thế nào để xóa 1 từ trong 1 chuỗi?
em cho chạy chương trình thì nó báo sai ở chỗ hàm erase vậy thì phải thay thế bằng hàm nào ạ
#include<iostream>
#include<conio.h>
#include<fstream>
using namespace std;
int main()
{
int i;
FILE *p1;
FILE *p2;
char line1[4][60], line2[4][20];
if((p1=fopen("file1.txt","r"))==NULL)
{
printf("file cannot be printed");
getch();
}
while(!feof(p1))
{
for(int i=0; i<3; i++)
{
fgets (line1[i], 60, p1);
printf("%s", line1[i]);
}
}
fclose(p1);
if((p2=fopen("file2.txt","w+"))==NULL)
{
printf("file cannot be printed");
getch();
}
for(int i= 0; i<3; i++)
{
fwrite(line1[i],sizeof(line1[i]),1,p2);
}
while(fread(line2,sizeof(line2),1,p2)==1)
{
for(int i=0; i<4; i++)
{
for(int j =0; j<20; j++)
{
if(line2[i][j]==' '&&line2[i][j+1]=='a'&&line2[i][j+2]==' ')
line2& erase(j,j+2);
else if(line2[i][j]==' '&&line2[i][j+1]=='a'&&line2[i][j+2]=='n'&&line2[i][j+3]==' ')
line2& erase(j,j+3);
else(line2[i][j]==' '&&line2[i][j+1]=='t'&&line2[i][j+2]=='h'&&line2[i][j+3]=='e'&&line2[i][j+4]==' ');
line2& erase(j,j+4);
}
}
printf("the new string is:
");
while(!feof(p1))
{
for(int i=0; i<3; i++)
{
fgets (line2[i], 60, p1);
printf("%s", line2[i]);
}
}
}
Bài liên quan
bạn vào đây tim hiểu http://www.cplusplus.com/reference/string/string/erase/
nhưng đó là c++ bạn ơi
Bạn post cả lỗi lên đây.
Không được khai báo. Bạn xem lại thử bạn đã định nghĩa hàm erase ở đâu?
line2& erase(j,j+2);
là sao nhỉerase trong thư viện string, code nhìn lai lai sao ấy nhỉ
thì thế em mới nhờ các bác sửa hộ, chứ cái hàm erase em biết là ở trong c++ nhưng em chưa học đến vì em đang học c thôi, bây giờ em cần một hàm hoặc 1 đoạn code khác để xóa đi mấy từ a, an, the trong đoạn văn của file1 á.
Tự dưng cảm thấy mình thiếu kiến thức quá :3
dùng strstr để kiếm chuỗi. Dùng memmove để di chuyển chuỗi. Ngắn gọn
Chưa #include làm sao erase đc