>Файлы находятся просто на диске С
Корень диска С - место с особыми разрешениями. Без [явно элевированных] прав админа там нельзя создавать файлы, сделано для того, чтобы туда не закидывался всякий мусор.
В общем, если у пользователя есть права локального админа (это обычно справедливо для стандартно созданного пользователя винды) - нужно создать любую папку, например C:\Tmp . Она унаследует права диска C: по умолчанию, но с тем отличием, что авторизованный пользователь там всё же сможет создавать файлы без запроса разрешения (файл h.txt нельзя создавать руками до запуска).
Если речь идёт о компьютере в учебном заведении, то пользователь, созданный для учащегося ограничен и не даст возможности создать C:\Tmp и какие-либо другие папки, за исключением домашней директории пользователя и временной папки.
Домашнюю директорию пользователя можно получить как-то так в шарпе:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
или лучше в "Моих документах"
Environment.GetFolderPath(Environment.SpecialFolder.Personal)
using System;
using System.IO ;
class Program
{
static void Main()
{
// Определение путей к файлам
string pathF = @"c:\f.txt";
string pathG = @"c:\g.txt";
string pathH = @"c:\h.txt";
try
{
// Открытие файловых потоков
using (StreamReader readerF = new StreamReader(pathF))
using (StreamReader readerG = new StreamReader(pathG))
using (StreamWriter writerH = new StreamWriter(pathH))
{
// Посимвольное чтение из файлов
int charFromF;
int charFromG;
while ((charFromF = readerF.Read ()) != -1 && (charFromG = readerG.Read ()) != -1)
{
if (charFromF == charFromG)
{
// Запись совпадающих символов в файл h
writerH.Write((char)charFromF);
}
else
{
// Прекращение записи при первом несовпадении
break;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Произошла ошибка: " + ex.Message);
}
}
}