我正在尝试从exe文件所在的目录中读取文件。 data.txt文件位于VS Project目录中,当我指定完整路径时,一切正常。
char curDirectory[MAX_PATH];
GetCurrentDirectory(MAX_PATH, curDirectory);
char filePath[MAX_PATH];
char *name = "\\data.txt";
memcpy(filePath, curDirectory, sizeof(curDirectory));
memcpy(filePath + strlen(curDirectory), name, strlen(name));
HANDLE hFile = CreateFile(filePath, GENERIC_ALL, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
答案 0 :(得分:1)
你不会终止字符串。通过在List<string> fileLines = new List<string>();
using (var reader = new StreamReader(fileName))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (line == "") continue; // refuse bare lines...
string a = line.Split(',')[0];
string b = line.Split(',')[1];
DateTime dt = DateTime.ParseExact(line.Split(',')[2], "dd.MM.yyyy", null);
fileLines.Add(line); // if you want....
}
}
的第二次调用中传递strlen(name) + 1
来执行此操作。
其他一些观察结果:
memcpy
失败时,您应该致电CreateFile
以获取错误代码。 GetLastError
和strcpy
而不是strcat
。 memcpy
并让该类管理缓冲区。