首先,我尝试用fopen函数打开一个文件,并使用fprint函数打印文件的内容,但它只是打印一堆符号到终端。
过了一段时间,我意识到它不把指向流的指针作为参数,上面提到的行为是预期的。它在打印实际的指针值。putc或puts函数似乎也没有将指向文件I/O流的指针作为参数。
我现在最好的猜测是,我必须访问以某种方式创建的缓冲区fopen函数!但我不知道如何实现,也不知道是否可能实现。总而言之,我现在完全被困住了。
这里的最终目标是获取来自STDIN和/或文件的输入,对文本进行一些处理(例如:小写到大写),并将结果输出到STDOUT和/或文件。我想,如果我能得到上述问题的答案,那么它应该有助于最终目标,也许。
PS:如果这个问题可以在任何方面得到改善,请告诉我。谢谢你!
也许下面的代码将有助于更好地理解我想说的内容。
.section .data
o_rdonly:
.ascii "r"
content:
.ascii "Content of the file: %d\n" #This is how I figured what those random symbols were.
.section .bss
.lcomm buffer, 10
.section .text
.globl _start
_start:
movl %esp, %ebp
pushl $o_rdonly
pushl 8(%ebp)
call fopen
##Print the content of the file?##
#pushl %eax #
#call printf #It just prints the actual address of the File I/O pointer.
pushl $0
call exit
###你需要先从文件中读取使用fread
or fgets
or some other function and或fgets
or 或者其他函数,然后把你读到的写进标准输出。没有直接打印一个文件的内容的快捷方式。