我正在努力理解和绘制我自己的PDF417(2d条形码)DLL.无论如何,文件的实际绘制是完美的,并且在32位的正确边界内(作为单色结果).在写入数据时,以下是从C++ Visual Studio内存转储到bmp缓冲区的指针复制的内存转储.每行在下一行之前正确分配到36宽.
对于帖子中的wordwrap感到很抱歉,但我的输出与内存转储的宽度相同,所以你可以更好地看到失真.
当前图纸宽273像素,高12像素,单色......
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab a8 61 d7 18 ed 18 f7 a3 89 1c dd 70 86 f5 f7 1a 20 91 3b c9 27 e7 67 12 1c 68 ae 3c b7 3e 02 eb 00 00
00 ab a8 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此函数将文字写入文件:
extern void write_int(FILE * out, int num) {
fwrite(&num,sizeof(int),1, out);
if(ferror(out)){
perror(__func__);
exit(EXIT_FAILURE);
}
}
Run Code Online (Sandbox Code Playgroud)
但是每当它试图运行fwrite时我都会遇到分段错误.我查看了fwrite(3)的手册页,我觉得我正确使用它,有什么我缺少的吗?
如果fwrite&fclose从同一个文件描述符的两个线程并行调用会发生什么?
我编写了一个程序来生成大型.SQL文件,以便快速填充非常大的数据库.我用PHP编写脚本.当我开始编码时,我使用的是fopen()和fwrite().当文件太大时,程序会将控制权返回给shell,文件将不完整.
不幸的是,我不确定"太大"究竟有多大.我想它可能已经大约4GB.
为了解决这个问题,我把文件echo给了stdout.当我这样调用程序时,我重定向了它:
[root@localhost]$ php generatesql.php > myfile.sql
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力.我的输出文件最终大约是10GB.
那么我的问题是:fopen()和fwrite()是否受文件系统的限制,因为它们能够生成多大的文件?如果是这样; 这是PHP的限制吗?这是否也发生在其他语言中?
我正在尝试格式化我正在创建的文件,以便每个名称/值对都在它自己的行上
我确信这很简单,但我的.ini文件根本没有格式化换行符.我错过了什么?
function wpseTest()
{
$query = "SELECT option_name, option_value FROM wp_options where option_name like 'test|_%' escape '|' AND option_value > ''";
global $wpdb;
$matches = $wpdb->get_results($query);
$mySettings = '[settings]\r\n';
foreach ($matches as $result){
$mySettings .= $result->option_name;
$mySettings .= ' = ';
$mySettings .= $result->option_value;
$mySettings .= '\r\n';
}
$mySettingsFileLocation = WP_PLUGIN_DIR.'/test/settings-backup.ini';
$mySettingsFile = fopen($mySettingsFileLocation, 'w');
fwrite($mySettingsFile, $mySettings);
fclose($mySettingsFile);
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含字符串的结构.像这样的东西:
struct Chunk {
int a;
string b;
int c;
};
所以,我想,我不能使用fread和fwrite函数从文件中读写这个结构.因为字符串可能会保留不同的内存容 但这样的代码工作正常.
Chunk var;
fwrite(&var, sizeof(Chunk), 1, file);
fread(&var, sizeof(Chunk), 1, file);
它真的有些问题吗?
如果它不存在,是否可以只用PHP编写文件?
$file = fopen("test.txt","w");
echo fwrite($file,"Some Code Here");
fclose($file);
Run Code Online (Sandbox Code Playgroud)
因此,如果文件存在,代码将不会编写代码,但如果文件不存在,它将创建一个新文件并编写代码
提前致谢!
我必须写一个文件如下:
A
B
C
D
...
Run Code Online (Sandbox Code Playgroud)
字母表中的每个字符都需要写入文件中的不同行.我有以下程序一个接一个地写字符:
FILE* fp;
fp = fopen("file1","a+");
int i;
char ch= 'A';
for(i=0; i<26; i++){
fwrite(&ch, sizeof(char), 1, fp);
ch++;
}
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
如何更改上述程序以将每个字符写入新行.(我尝试在每个字符后写"\n",但是当我使用VI编辑器或ghex工具查看文件时,我看到了额外的字符;我正在寻找一种方法,以便vi编辑器显示完全如上所示的文件).
我在第一次fwrite之后尝试使用以下内容:
fwrite("\n", sizeof("\n"), 1, fp);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我动态分配了一个2D数组,用双指针访问,如下所示:
float **heat;
heat = (float **)malloc(sizeof(float *)*tI); // tI == 50
int n;
for(n = 0; n < tI; n++){ // tI == 50
heat[n] = (float *)malloc(sizeof(float)*sections); // sections == 30
}
Run Code Online (Sandbox Code Playgroud)
在用值填充所有元素之后(我确定它们都被正确填充),我试图将它输出到这样的文件:
fwrite(heat, sizeof(heat[tI-1][sections-1]), ((50*30)-1), ofp);
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
fwrite(heat, sizeof(float), ((50*30)-1), ofp);
Run Code Online (Sandbox Code Playgroud)
我想尝试输出这个2D阵列吗?
我知道我的文件I/O正在工作(文件指针ofp不为空,并以十进制方式写入文件),但当我尝试使用fwrite写入时,非常奇怪的字符和消息正在输出到我的输出文件在二进制.
我知道这heat[tI-1][sections-1]也确实在2D数组的范围内.我刚刚使用它,因为我知道这是我持有的最大元素.
我的输出是很多NULL,有时是奇怪的系统路径.
我正在尝试使用fwrite将文件写入文件之前和之后获取文件的最后修改时间。但是,由于某种原因,我得到相同的值。
<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);
?>
Run Code Online (Sandbox Code Playgroud)
现在,在运行此脚本大约一分钟之前,我使用文本编辑器修改了“ log.txt”。所以我应该得到大约40-60秒的时差。如果有人指出这里发生了什么,那将是非常感谢。谢谢。