Iroh
Oyabun
- 25/3/07
- 6,495
- 174
Tớ có một cái assignment là làm một từ điển anh-việt. Giờ đang làm phần nhập từ mới. Tớ có nghĩ ra giải thuật sau:
[SPOIL]- Nhập từ tiếng anh và nghĩa tiếng việt
+) Sau đó bắt đầu kiểm tra xem từ đó đã có hay chưa:
- Dùng một vòng lặp để ghi toàn bộ file vào một mảng.
- Dùng strstr để kiểm tra xem có từ tiếng anh vừa nhập trong mảng hay không.
Nếu có thì hỏi xem có muốn thêm nghĩa tiếng việt hay không. Có thì di chuyển con trỏ về cuối từ tiếng anh và fputs nghĩa tiếng việt rồi fprintf thêm dấu phẩy để phân cách với nghĩa cũ. Không thì return.
Nếu không có từ đó thì tiếp tục thực hiện chương trình là fputs cả từ tiếng anh và nghĩa tiếng việt vào cùng một vòng trong file văn bản.[/SPOIL]
Nhưng có vấn đề xảy ra là giờ cái bước kiểm tra xem từ tiếng anh đã có hay chưa thì nó chả bao giờ báo là đã có rồi cả. Toàn bỏ qua rồi thực thi ghi luôn từ tiếng anh và nghĩa tiếng việt vào. Ai xem hộ tớ với:(
[SPOIL]
[/SPOIL]
[SPOIL]- Nhập từ tiếng anh và nghĩa tiếng việt
+) Sau đó bắt đầu kiểm tra xem từ đó đã có hay chưa:
- Dùng một vòng lặp để ghi toàn bộ file vào một mảng.
- Dùng strstr để kiểm tra xem có từ tiếng anh vừa nhập trong mảng hay không.
Nếu có thì hỏi xem có muốn thêm nghĩa tiếng việt hay không. Có thì di chuyển con trỏ về cuối từ tiếng anh và fputs nghĩa tiếng việt rồi fprintf thêm dấu phẩy để phân cách với nghĩa cũ. Không thì return.
Nếu không có từ đó thì tiếp tục thực hiện chương trình là fputs cả từ tiếng anh và nghĩa tiếng việt vào cùng một vòng trong file văn bản.[/SPOIL]
Nhưng có vấn đề xảy ra là giờ cái bước kiểm tra xem từ tiếng anh đã có hay chưa thì nó chả bao giờ báo là đã có rồi cả. Toàn bỏ qua rồi thực thi ghi luôn từ tiếng anh và nghĩa tiếng việt vào. Ai xem hộ tớ với:(
[SPOIL]
Mã:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct tudien{
char english[15];
char vietnam[50];
};
void main()
{
struct tudien tumoi;
char *l, *cha;
char ch, addflag;
char temp[1];
FILE *fp;
cha=(char*)malloc(sizeof(char));
//Tao file neu chua co file trong may
fp = fopen("D:\Tudien.dat", "a+");
if (fp == NULL)
{
printf("Khong the mo File");
getch();
return;
}
fclose(fp);
//Nhap tu
printf("Nhap tu moi tieng anh:");
gets(tumoi.english);
printf("Nhap tu moi tieng viet:");
gets(tumoi.vietnam);
//Mo file de kiem tra da co tu do hay chua
fp = fopen("D:\Tudien.dat", "a+");
if (fp == NULL)
{
printf("Khong the mo File");
getch();
return;
}
do{
ch=fgetc(fp);
temp[1]=ch;
strcat(cha,temp);
}while(ch!=EOF);
l = strstr(cha,tumoi.english);
if (l!=NULL)
{
printf("Da co tu nay.\nCo muon them nghia tieng viet hay khong?\nY = Yes, N = No - ");
scanf("%c", &addflag);
if (addflag == 'Y')
{
fseek(fp,sizeof(tumoi.english),SEEK_CUR);
fputs(tumoi.vietnam, fp);
fprintf(fp,",");
printf("Ket thuc chuong trinh.");
getch();
return;
}
else if(addflag == 'N')
{
printf("Ket thuc chuong trinh.");
getch();
return;
}
}
fclose(fp);
//Mo file de ghi tu moi vao
fp = fopen("D:\Tudien.dat", "a+");
if (fp == NULL)
{
printf("Khong the mo File");
getch();
return;
}
fputs(tumoi.english, fp);
fputs(tumoi.vietnam, fp);
fprintf(fp, "\n");
fclose(fp);
printf("Ket thuc chuong trinh.");
getch();
}
,chẳng ghi chú thích gì cả,phải paste vào mà debug mới xong...

