我正在测试fgetc()函数,但无法正常工作(我在此之前已使用此函数,所以我知道它的工作原理)
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file = NULL;
int n;
file = fopen("test.txt", "w+");
if(file != NULL)
{
fputs("ab", file);
printf("%c", fgetc(file));
}
else
{
printf("error");
}
return 0;
}
输出应为“ a”,但其他内容
答案 0 :(得分:1)
已打开文件以供写入和读取,但是您需要function highlightNoteJustSaved(){
var curI = noteCounter;
var anchorAt = parseInt($("#anchorAt").val());
var highlightLen = parseInt($("#highlightLen").val());
/*p to find, for example: p-2-French*/
var curP = document.getElementById('p-'+curSentNum.toString()+"-"+$("#highlightLangName").val());
var range = document.createRange();
root_node = curP;
range.setStart(root_node.childNodes[0], anchorAt);
range.setEnd(root_node.childNodes[0], anchorAt+highlightLen);
var newNode = document.createElement("span");
newNode.style.cssText="background-color:#ceff99";//yellow
newNode.className = alreadyNoteStr;
newNode.setAttribute('id','already-note-'+curI.toString());
range.surroundContents(newNode);
}
到文件中的正确位置(此处是开头)。特别是,在读写之间切换时,您需要fseek
或fseek
。
指定“ r +”,“ w +”或“ a +”访问类型时,两个 和写入已启用(据说该文件已打开以进行“更新”)。 但是,当您从阅读切换为书写时,输入操作 必须遇到EOF标记。如果没有EOF,则必须使用 介入对文件定位功能的调用。文件定位 函数是fsetpos,fseek和rewind。 从写作切换为 阅读时,您必须使用干预来使您感到困惑或 文件定位功能。
在任何情况下,写入文件后,文件指针都位于错误的位置以读取刚刚写入的内容。
所以代码变成了
fflush
如果要继续写入文件,则必须#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *file = NULL;
file = fopen("test.txt", "w+");
if(file != NULL) {
fputs("ab", file);
fseek(file, 0, SEEK_SET);
printf("%c", fgetc(file));
fclose(file);
}
else {
printf("error");
}
return 0;
}
结束。
答案 1 :(得分:0)
您的错误是您正在尝试读取已打开以进行写入的文件。您应该在其中写入内容,然后关闭文件并重新打开以进行读取。这段代码将显示我在说什么:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fileRead, *fileWrite = NULL;
int n;
fileWrite = fopen("test.txt", "w+");
if(fileWrite != NULL)
{
fputs("ab", fileWrite);
fclose(fileWrite);
}
else
{
printf("error");
}
// Open again the file for read
fileRead = fopen("test.txt", "r");
printf("%c", fgetc(fileRead));
fclose(fileWrite);
// End function
return 0;
}