Mọi người giúp mình sửa lỗi này với, kiểm tra lại nhiều lần lắm rồi mà chẳng thấy sai ở đâu cả
Mình có 3 files, nội dung ở dưới đây
Nhìn thì có vẻ ok nhg mà khi chạy thì file nguoitreoco.c cứ báo lỗi “undefined reference to ‘chonTu’”, kt mãi mà chẳng thấy lỗi sai nào, mn giúp mình với
Nội dung 3 files(xin lỗi các bạn vì nó khó nhìn quá):
nguoitreoco.c:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "danhmuc.h"
int win(int sokytuBimat[ ], long dodaiTu);
int kiemtraKytu(char kytu, char tuBimat[ ], int sokytuBimat[ ]);
char docKytu( );
int main(int argc, char* argv[ ])
{
char kytu = 0;
char tuBimat[100] = {0};
int *sokytuBimat = NULL;
long soluotDoan = 10;
long i = 0;
long dodaiTu = 0;
printf ("Chao mung den voi tro choi Nguoi treo co !\n\n ");
if (!chonTu(tuBimat))
exit(0);
dodaiTu = strlen(tuBimat);
sokytuBimat = malloc(dodaiTu * sizeof (int));
if (sokytuBimat == NULL)
exit(0);
for (i = 0 ; i < dodaiTu ; i++)
sokytuBimat[i] = 0;
while (soluotDoan > 0 && !win(sokytuBimat, dodaiTu))
{
printf ("\n\n Ban co %d luot doan de choi ", soluotDoan);
printf ("\n Tu bi mat la gi ?");
}
for (i = 0 ; i < dodaiTu ; i++)
{
if (sokytuBimat[i])
printf ("%c", tuBimat[i]);
else
printf ("*");
}
printf ("\n Xin moi ban doan mot ky tu: ");
kytu = docKytu( );
if (!kiemtraKytu(kytu, tuBimat, sokytuBimat))
{
soluotDoan--;
}
if (win(sokytuBimat, dodaiTu))
printf ("\n\n Chuc mung, ban da chien thang ! Tu bi mat la : %s", tuBimat);
else
printf ("\n\n Xin chia buon, ban da thua !\n\n Tu bi mat la : %s", tuBimat);
free (sokytuBimat);
return 0;
}
char docKytu( )
{
char kytuNhapVao = 0;
kytuNhapVao = getchar( );
kytuNhapVao = toupper(kytuNhapVao);
while (getchar( ) != '\n') ;
return kytuNhapVao;
}
int win(int sokytuBimat[ ], long dodaiTu)
{
long i = 0;
int nguoichoiChienThang = 1;
for (i = 0 ; i < dodaiTu ; i++)
{
if (sokytuBimat[i] == 0)
nguoichoiChienThang = 0;
}
return nguoichoiChienThang;
}
int kiemtraKytu(char kytu, char tuBimat[ ], int sokytuBimat[ ])
{
long i = 0;
int kytuChinhXac = 0;
for (i = 0 ; tuBimat[i] != '\0' ; i++)
{
if (kytu == tuBimat[i])
{
kytuChinhXac = 1;
sokytuBimat[i] = 1;
}
}
return kytuChinhXac;
}
danhmuc.c:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "danhmuc.h"
int chonTu(char *tuDuocChon)
{
FILE* danhmuc = NULL;
int soThuTuCuaTu = 0, soThuTuCuaTuDuocChon = 0, i = 0;
int luuKytu = 0;
danhmuc = fopen("danhmuc.txt", "r");
if (danhmuc == NULL)
{
printf ("\n Khong the mo danh muc tu bi mat");
return 0;
}
do
{
luuKytu = fgetc(danhmuc);
if (luuKytu == '\n')
soThuTuCuaTu++;
} while(luuKytu != EOF);
soThuTuCuaTuDuocChon = tuNgauNhien(soThuTuCuaTu);
rewind(danhmuc);
while (soThuTuCuaTuDuocChon > 0)
{
luuKytu = fgetc(danhmuc);
if (luuKytu == '\n')
soThuTuCuaTuDuocChon--;
}
fgets(tuDuocChon, 100, danhmuc);
tuDuocChon[strlen(tuDuocChon) - 1] = '\0';
fclose(danhmuc);
return 1;
}
int tuNgauNhien(int sothutuLonNhat)
{
srand(time(NULL));
return (rand( ) % sothutuLonNhat);
}
danhmuc.h:
#ifndef DANHMUC_H_INCLUDED
#define DANHMUC_H_INCLUDED
int chonTu(char *tuDuocChon);
int tuNgauNhien(int sothutuLonNhat);
#endif // DANHMUC_H_INCLUDED

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?