[A few more comments to add to what Salem said]
>#include"stdio.h"
If you didn't get it from what Salem's comments, it's better (and more common) practice to use angle brackets here instead of quotes, since stdio.h is a standard library header.
> main()
> {
> FILE *fp
> char another='Y'
> struct emp
>{
> char name[40];
> int age;
> float bs;
> };
>struct emp e;
> fp=fopen("EMPLOYEE.DAT","w"

;
> if(fp==NULL)
>{ puts("cannot open file"

;
fputs("cannot open file\n", stderr);
It's good to get in the habit of writing error output to the standard error stream. In real programs, users will sometimes invoke your program in such a way that standard output and standard error go to different places.
> exit();
exit() requires an int argument, indicating termination status.
> }
>while(another=='Y');
If not for the trailing semi-colon, this means that the program will continue executing the statements between the next set of braces while `another' is equal to 'Y', which seems to be the intention. With the semi-colon, your program loops infinitely.
> { printf("\n ENTER NAME,AGE AND BASIC SALARY"

;
You'll want to insert a trailing space and call to fflush(stdout) afterwards to ensure that your prompt appears before the user can enter any input. Since stdout is line-buffered when connected to an interactive device, your characters may otherwise sit in the stream's internal buffer instead of being written.
> scanf("%s %d %f",e.name,&e.age,&e.bs);
It's dangerous to call scanf() with an unadorned %s in the format string because it doesn't limit the number of characters that can be stored in its corresponding argument. This makes your use of it equivalent to using gets(), which is a famous bug.
scanf("%39s %d %f",e.name,&e.age,&e.bs);
It will be difficult to detect errors with scanf() in this case. Initially reading the line with fgets() and then parsing the line into its components will allow you to do more effective error recovery. You should at least check scanf()'s return value.
> fprintf(fp,"%s %d %f\n",e.name,e.age,e.bs);
> printf("add another record(y/n)"

;
> fflush(stdin);
As Salem mentioned, fflush() does not have a defined meaning in ANSI C. Implementors are free to define its meaning however they wish or not implement fflush() in such a way that it expects input streams. This even includes the possibility that calling fflush() on an input stream will result in your program crashing.
In terms of output and update streams, fflush() is defined to immediately write any characters it has stored in the stream's internal buffer to the associated file. There isn't an analogous meaning for input streams. Where should the characters be "written" when flushing input?
The usual intent here is to discard characters from the input stream. In this case, scanf() will leave the newline character in stdin that the user typed following his/her input. One way to do this:
int c;
while ((c = getchar()) != '\n' && c != EOF)
continue;
> another=getche();
>}
>fclose(fp);
return 0;
>}