我试图从文件中读取浮点数到动态分配的2D数组.我正在使用c ++.
在我的.txt文件中,行的元素由制表符空间分隔,每行以新行开头.
我的问题是 -
我可以根据编号增加数组的大小吗?文件中存在的元素(行和列)?如果是这样,请建议一种方法.
我想写了不.在文本文件的第一行上的行和列,并在开头读取它们以设置将为我的数组分配空间的循环限制.有没有更好的方法,可能基于文本文件的格式?这样,我认为它将更接近流数据类型的场景.
提前致谢.
AKHIL
我使用了fread函数,我得到了一个4的缓冲区和一个"读错误".
为什么我buffer不是fileSize?
这是我的代码:
FILE *fp;
char* buffer;
fp = fopen("help.txt","r");
if (fp == NULL){
fputs("Can't open Help file, Help.txt",stderr);
exit(1);
}
fseek(fp, 0, SEEK_END);
long fileSize = ftell(fp);
rewind(fp);
buffer = (char*) malloc (sizeof(char)*fileSize);
if(buffer == NULL){
fputs("Memory Allocation Error",stderr);
exit(2);
}
size_t result = fread(buffer,1,fileSize,fp);
if(result != fileSize){
fputs("Reading error\n",stderr);
printf("File Size : %lu\n",fileSize);
printf("Result : %lu\n",result);
printf("Buffer Size : %u\n",sizeof(buffer));
exit(3);
}
fputs(buffer,stdout);
fclose(fp);
free (buffer);
Run Code Online (Sandbox Code Playgroud)
这是我运行程序时的输出:
Reading error
File Size : 224
Result …Run Code Online (Sandbox Code Playgroud) 我正在尝试读取.dat文件中的一组点,并通过我的.f文件中的算法运行这些点.我一直在使用OPEN声明:
OPEN(UNIT=1,FILE='POINTS.DAT',FORM='UNFORMATTED')
Run Code Online (Sandbox Code Playgroud)
而对于一个初学者,一直试图打印出.dat中的值 - 不工作.
PRINT *, 1
PRINT *, POINTS.DAT
PRINT *, 'POINTS.DAT'
Run Code Online (Sandbox Code Playgroud)
我是否应该试图打印出值?我应该如何索引.dat中的值?我应该做一个DO循环,并通过我文件中的数据点循环n次吗?我该如何调用这些值?
所以我基本上需要我的程序来打开文件并做一些事情.当程序要求用户输入文件名,并且用户第一次正确输入文件名时,操作正常.但是如果用户输入错误的名称,程序会说"无效名称再次尝试",但即使用户正确键入名称,它也永远无法打开文件.这是代码:
ifstream read_file(file.c_str());
while(true)
{
if(!(read_file.fail()))
{
...
}
else
{
cout << "Either the file doesn't exist or the formatting of the file is incorrect. Try again.\n>";
}
cin >> file;
ifstream read_file(file.c_str());
}
Run Code Online (Sandbox Code Playgroud)
有什么问题,有什么想法吗?谢谢
我正在尝试使用BufferedReader将第一行文件读取为字符串.我该怎么做呢?另外我怎样才能将整个文件读成字符串?如何在readline(int line)不迭代前一行的情况下读取特定行?
File namefile = new File(root, ".name");
FileReader namereader = new FileReader(namefile);
BufferedReader in = new BufferedReader(namereader);
Run Code Online (Sandbox Code Playgroud) 我已将excel 2007文档导出为CSV(以分号分隔).我正在使用CZECH office 2010和捷克Windows 7.
当我在.net C#中读取文件时,带有特殊捷克符号的文本已损坏.就在我使用的时候
像string [] lines = file.readalllines(path); (来自System.IO.File)
所以我想我需要专门提供正确的编码,对吗?所以我试过了:
string[] lines = File.ReadAllLines(path,encoding);
Run Code Online (Sandbox Code Playgroud)
编码变量被定义为
Encoding encoding = Encoding.UTF8 for example.
Run Code Online (Sandbox Code Playgroud)
没有选项有效.最奇怪的是,其中一些,比如Encoding.Unicode甚至扔了
IndexOutOfRandgeException
Run Code Online (Sandbox Code Playgroud)
.
我该如何解决这个编码问题?谢谢.
顺便说一句,我的办公室设法以正确的方式打开和阅读该文件.
例如.我有文件夹"MyFolder"我希望获得文件名为" *D.*" 的所有文件的大小
有一个简单的方法来做到这一点?
(PS我知道整个文件夹,我可以使用TotalSize()来获取它的大小,但是我的约束怎么样?)
在我的java应用程序中,我想将一些图像从客户端传输到服务器.我使用Socket连接客户端和服务器.当我将字符串从客户端传输到服务器但我无法传输图像文件时,它正在工作.
我在用
BufferedInputStream
BufferedOutputStream
用于传输字符串.
我知道要传输文件我需要使用FileInputStream:
BufferedInputStream bis bis = new BufferedInputStream(new FileInputStream("111.JPG"));
Run Code Online (Sandbox Code Playgroud)
但我不知道,究竟需要写什么.所以请通过一些代码示例给出答案.
我试图解析一个文件,我得到一个奇怪的分段错误.这是我正在使用的代码:
#include <iostream>
using namespace std;
int main ()
{
FILE *the_file;
the_file = fopen("the_file.txt","r");
if (the_file == NULL)
{
cout << "Error opening file.\n";
return 1;
}
int position = 0;
while (!feof(the_file))
{
unsigned char *byte1;
unsigned char *byte2;
unsigned char *byte3;
int current_position = position;
fread(byte1, 1, 1, the_file);
}
}
Run Code Online (Sandbox Code Playgroud)
我用命令编译它
g++ -Wall -o parse_file parse_file.cpp
Run Code Online (Sandbox Code Playgroud)
如果我删除while循环中声明current_position的行,代码运行没有问题.我也可以将该声明移到unsigned char指针的声明之上,代码将无问题地运行.为什么它会在声明中出现错误?
关于我在代码中明确打开的文件是多么必要的想法,只是一些想法.我来自C和C++编程的背景,并开始通过Ruby导航.提前感谢您的反馈.
from_file, to_file = ARGV
script = $0
puts "Copying from #{from_file} to #{to_file}"
File.open(to_file, 'w').write(File.open(from_file).read())
puts "Alright, all done."
Run Code Online (Sandbox Code Playgroud)