Работа с содержимым текстового файла

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by lagaet, 30 Jan 2011.

  1. lagaet

    lagaet New Member

    Joined:
    16 Jan 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Мужики, нужна ваша помощь! Вот задача:

    Есть текстовый файл в корне диска C:\ под названием 1.txt.
    Файл может иметь, к примеру, такое содержание:

    мусоррррыффывфы 1
    456
    45645
    634322555234ыыы
    1
    0
    2
    3
    ыыыыы PASSWD0921345


    В конце первой строки после мусора в любом случае будет стоять либо ноль, либо единица (сейчас там стоит единица).

    Мне нужно как-то прочитать содержимое этого файла.
    Т.е, если, к примеру, в конце первой текстовой строки стоит 1, то необходимо скопировать самое последнее слово в файле (в даном случае PASSWD0921345). Если же стоит 0, то не принимать никаких действий.

    Code:
    #include <windows.h>
    
    LPCTSTR ReadPassword()
    {
        HANDLE    hFile;
        DWORD    dwBytesRead;
        DWORD    dwBytesWritten;
        static char buff4File[256];
        static char buff4Password[256];
    
        hFile = CreateFile("C:\\1.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        dwBytesRead = GetFileSize(hFile, &dwBytesRead);
        ReadFile(hFile, buff4File, dwBytesRead, &dwBytesWritten, NULL);
        CloseHandle(hFile);
    
        return buff4File;
    }
    
    
    int WINAPI WinMain(HINSTANCE hInstance,
                       HINSTANCE hPrev,
                       LPSTR     lpCmd,
                       int       nShow)
    {
        MessageBox(0, ReadPassword(), 0, 0);
    
        return 0;
    }
    
    То есть, смотрите:
    Если в конце первой строки стоит 0, то никакой строки вида PASSWD0921345 в конце файла быть не может.
    Если же в конце (все той же первой строки) стоит 1, то самое последнее слово (PASSWD0921345) надо скопировать в отдельный буфер.
    Хотелось бы переделать функцию ReadPassword() так, чтобы она возвращала буфер, содержащий слово PASSWD0921345 (в данном случае), или fail, если в конце 0.

    Help!
     
  2. j-prof

    j-prof Banned

    Joined:
    29 Aug 2010
    Messages:
    321
    Likes Received:
    11
    Reputations:
    -4
    гавно код на шарпе
    Code:
    using System;
    using System.IO;
    
    	class MainClass
    	{
    		public static void Main (string[] args)
    		{
    			string path = Console.ReadLine();
    			string[] lines = File.ReadAllLines(path);
    			if(lines[0].ToCharArray()[lines[0].ToCharArray().Length-1] == '0')
    				return;
    			Console.WriteLine(lines[lines.Length-1].Split(' ')[lines[lines.Length-1].Split().Length-1]);
    			Console.ReadLine();
    		}
    	}
    
    
    
     
     
  3. lagaet

    lagaet New Member

    Joined:
    16 Jan 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    j-prof, спасибо!
    Но всё же - как это можно реализовать на винапи?