标签: fwrite

fwrite 写入 NUL

我正在尝试使用 PHP 写入文件,这是我正在使用的代码(取自我上一个问题的答案):

$fp = fopen("counter.txt", "r+");

while(!flock($fp, LOCK_EX)) {  // acquire an exclusive lock
    // waiting to lock the file
}

$counter = intval(fread($fp, filesize("counter.txt")));
$counter++;

ftruncate($fp, 0);      // truncate file
fwrite($fp, $counter);  // set your data
fflush($fp);            // flush output before releasing the lock
flock($fp, LOCK_UN);    // release the lock

fclose($fp);
Run Code Online (Sandbox Code Playgroud)

读取部分工作正常,如果文件被读取,则其内容读取良好,即如果文件包含2289,则2289读取。

问题是,当它增加并将值重写到该文件时,[NUL][NUL][NUL][NUL][NUL][NUL][NUL][NUL]1会被写入。

我错过了什么?为什么写入空字符?

php file fwrite nul

1
推荐指数
1
解决办法
1610
查看次数

PHP 如何写入文件中的特定行?

我需要在不清空 php 代码的情况下写入文件中的特定行。

$file="variables.php";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgets($handle);
  $linecount++;
}

$linecount=$linecount-1;
echo $linecount;

fclose($handle);


$handle = fopen($file, "a+");
fwrite($handle, "$newvar=null". "\n");
Run Code Online (Sandbox Code Playgroud)

php fopen fwrite

1
推荐指数
1
解决办法
5627
查看次数

fwrite 从字符串中写入二进制数据

我想创建一个文件并将“A”写入其中(ascii 为 65 == 01000001)。奇怪的是,无论 的值是多少std::string binary,其中总是写有字母myfile.txtP。

    std::string binary = "01000001";
    std::string file = "myfile.txt";
    FILE* f;
    f = fopen(file.c_str(), "wb");      
    fwrite(&binary, 1, 1, f);     
    fclose(f);
Run Code Online (Sandbox Code Playgroud)

执行此代码后,我使用命令读取二进制数据xxd -b myfile,得到以下结果:

00000000:01010000

您发现这段代码有问题吗?

c++ fwrite

1
推荐指数
1
解决办法
2876
查看次数

有没有办法用 fseek() 更改文件的一行?

我正在用 C 训练文件处理,我试图在fseek()写入和读取时更改文件的单行或位置,fread()无论fwrite()是否更改变量并再次写入整个文件,但显然附加模式和写入模式都不允许您正如我在下面的示例中尝试的那样执行此操作:

void main()
{
    FILE *file;
    char answer;
    char text[7]  = "text 1\n";
    char text2[7] = "text 2\n";

    file = fopen("fseek.txt", "w"); //creating 'source' file
    fwrite(text, sizeof(char), sizeof(text), file);
    fwrite(text, sizeof(char), sizeof(text), file);
    fwrite(text, sizeof(char), sizeof(text), file);
    fclose(file);

    scanf("%c", &answer);

    switch(answer)
    {
    case 'a':
        //attempt to change single line with append mode
        file = fopen("fseek.txt", "a");
        fseek(file, 7, SEEK_SET); //7 characters offset is the second line of the file
        fwrite(text2, sizeof(char), sizeof(text), …
Run Code Online (Sandbox Code Playgroud)

c fseek fwrite file-handling fread

1
推荐指数
1
解决办法
563
查看次数

替代'或'?

我使用PHP fwrite将HTML和PHP输入到文件中问题是这个,我用''来封装$ content is ie.HTML和PHP,

然后我用""来封闭

 $sql="SELECT * FROM $tbl_name WHERE..... 
Run Code Online (Sandbox Code Playgroud)

这是$ content,

但是现在,当我想要这样做时,我陷入困境:

  WHERE var1="$var1" and var2="$var2"  
Run Code Online (Sandbox Code Playgroud)

因为我已经使用了''和"",如果我使用其中的一个,那么它显然不会起作用

有什么想法可以解决这个问题吗?还有其他类似'或'的符号吗?

在此先感谢Niall

php variables fwrite

0
推荐指数
1
解决办法
185
查看次数

fwrite不会在C中保存完整数组

我有一个668x493的数组,我想保存.所以我正在做以下事情.

data:是一个指向保存值的数组的指针.

long lSize;
FILE* image_save;
image_save=fopen("image_save_file.bin","w+b");
fwrite(data,1,329324,image_save);
Run Code Online (Sandbox Code Playgroud)

但是,当我读回这个数组时:

char* check_image;

p1File=fopen("image_save_file.bin","r+b");

fseek (p1File , 0 , SEEK_END);
lSize = ftell (p1File);
fseek (p1File , 0 , SEEK_SET);
Run Code Online (Sandbox Code Playgroud)

当我检查lSize时,我看到它327680 ???

所以,当我做恐惧时,我只获得327680值!

请问,你能指出我的错误吗?

c c++ fwrite fread

0
推荐指数
2
解决办法
860
查看次数

用C++复制部分文件

我目前正在忙于一个项目,我必须将一个部分从一个文件复制到另一个文件,所以我使用fread和fwrite为它创建了一个代码.但我遇到了一个问题:出于测试目的,我制作了一个应该复制整个文件的代码,但不知何故,代码创建的副本比原始文件大.请参阅下面的代码

             FILE *base_file;
             FILE *new_file;
             fpos_t curpos;
             int tmp;

             // Open the base file
             fopen_s(&base_file, "C:/base.dat", "rb");
             // Open the file which should contain the copy
             fopen_s(&new_file, "C:/new.dat", "w");

             // Get the filesize
             fseek(base_file, 0, SEEK_END);
             fgetpos(base_file, &curpos);
             fseek(base_file, 0, SEEK_SET);

             //Read and copy (it seems to go wrong here)
             for(int i = 0; i < curpos; i++){
                 fread (&tmp, 1, 1, base_file);
                 fwrite(&tmp, 1, 1, new_file);
             }

             fclose(base_file);
             fclose(new_file);
Run Code Online (Sandbox Code Playgroud)

基本文件为525 kb,新文件为527kb.据我所知,出现此问题的部分是在有7个nullbytes的部分之后,并且副本在某些部分之后添加了一个'0D'(十六进制).在ascii中,'0D'字符是'回车'.我想知道我的复制代码将回车符添加到文件中的原因是什么?据我所知,这个脚本应该只是工作,因为我只是读取基本文件,并直接将其复制到新文件,并且基本文件不包含这些回车.

c++ windows stdio fwrite fread

0
推荐指数
1
解决办法
1442
查看次数

C fwrite()写入的字符数加倍

当我使用此代码时

FILE *f = fopen(file, "wb");
fflush(f);
if (f==NULL) {
    //perror(f);
    return 0;
}
else{
    fwrite(text, sizeof(char), strlen(text), f);
    int i = fprintf(f, "%s", text);
    if (i>0) {
        fclose(f);

        return  1;
    }
Run Code Online (Sandbox Code Playgroud)

如果我写的话,(textconst char text[1024000],它被设置为函数中的一个参数)

This is a test
This is a test
Run Code Online (Sandbox Code Playgroud)

为了测试它是否可以写多行,它会写出来

This is a test
This is a testThis is a test
This is a test
Run Code Online (Sandbox Code Playgroud)

为什么我会得到这种奇怪的行为?

c fwrite char

0
推荐指数
1
解决办法
1460
查看次数

使用指针C写入文件/从文件读取

我编写了一个程序,将指针写入文件(fwrite)并从文件读取指针(fread)。但是,该程序似乎没有在文件中写入任何内容,也没有从文件中读取任何内容。它只是将指针的最终增量打印5次并退出。谁能在我的语法中发现似乎正在执行此操作的错误/错误?

#include <stdio.h>

int main() {
    FILE *fTest;
    int *testPtr;
    int x = 10;
    
    if ((fTest = fopen("test.c", "wb")) == NULL) {
        printf("Error!");
    }

    testPtr = &x;
    int i;
    for (i = 0; i < 5; i++) {
        fwrite(testPtr, sizeof(int), 1, fTest);
        *testPtr += 1;
    }
    
    for (i = 0; i < 5; i++) {
        fread(testPtr, sizeof(int), 1, fTest);
        printf("%d", *testPtr);
    }

    fclose(fTest);
}
Run Code Online (Sandbox Code Playgroud)

c pointers file fwrite fread

0
推荐指数
1
解决办法
5924
查看次数

如果在同一执行中写入和读取文件,程序将挂起

我希望以下代码将数字42写入二进制文件,然后读取并打印出确切的值.它会这样做,但它不会退出,只是停止在等待用户输入时.这是执行我解释的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char argv[]){

    char *filename = "test.db";
    int *my_int = calloc(1, sizeof(int));
    *my_int = 42;

    // First we open file to write to it
    FILE *file = fopen(filename, "w");
    fwrite(my_int, sizeof(int), 1, file);
    fflush(file);
    free(file);

    // Then we want to read from it
    *my_int = -1;
    file = fopen(filename, "r");
    fread(my_int, sizeof(int), 1, file);
    free(file);

    printf("Read back %d\n", *my_int);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以简单地用w+旗帜打开它,但我只是想知道为什么它只是停止..

c fopen fwrite

0
推荐指数
1
解决办法
88
查看次数

标签 统计

fwrite ×10

c ×5

fread ×4

c++ ×3

php ×3

file ×2

fopen ×2

char ×1

file-handling ×1

fseek ×1

nul ×1

pointers ×1

stdio ×1

variables ×1

windows ×1