Tag: io

在C中逐个字符地读取文件

大家好,我正在用C编写一个BF解释器,我遇到了读文件的问题。 我曾经使用scanf来读取第一个字符串,但是你的BF代码中没有空格或注释。 现在这就是我所拥有的。 char *readFile(char *fileName) { FILE *file; char *code = malloc(1000 * sizeof(char)); file = fopen(fileName, “r”); do { *code++ = (char)fgetc(file); } while(*code != EOF); return code; } 我知道问题出现在我如何将文件中的下一个字符分配给代码指针但是我不确定那是什么。 我的指针知识缺乏,这是本练习的重点。 解释器工作正常,都使用指针,我只是在读取文件时遇到问题。 (我打算稍后只在文件中读取“+ – > <[]。”,但是如果有人有好的方法,那么如果你让我知道的话会很棒!) 提前致谢

getch()和getchar()有什么区别?

getch和getchar函数之间的确切区别是什么?

从文件或标准输入读取

我正在编写一个实用程序,它接受文件名或从stdin读取。 我想知道检查stdin是否存在的最强大/最快的方法(数据是否通过管道传输到程序),如果是,则读取该数据。如果不存在,则处理将在文件名上进行给出。 我已经尝试使用以下测试stdin大小,但我相信因为它是一个流而不是一个实际的文件,它不起作用,因为我怀疑它会,它总是打印-1 。 我知道我总是可以一次读取输入1个字符!= EOF但是我想要一个更通用的解决方案,所以如果stdin存在,我最终会得到fd或FILE *所以程序的其余部分将无缝运行。 我希望能够知道它的大小,等待前一个程序关闭流。 long getSizeOfInput(FILE *input){ long retvalue = 0; fseek(input, 0L, SEEK_END); retvalue = ftell(input); fseek(input, 0L, SEEK_SET); return retvalue; } int main(int argc, char **argv) { printf(“Size of stdin: %ld\n”, getSizeOfInput(stdin)); exit(0); } 终奌站: $ echo “hi!” | myprog Size of stdin: -1