问题标签 [getc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何在 ferror 文件中发出错误信号
假设我有这个代码:
有没有办法手动导致文件出错,这ferror
是真的,而不会将模式更改fopen
为“w”?(这会导致错误,因为我们myfile
以写入模式打开,但我们使用getc
.
c - 为什么不能使用“getc(f)) != EOF”直接比较?
我是 C 语言的新手,现在遇到这样的问题:如果我使用上面的表达式在文件中打印字符串,为什么会得到一个奇怪的结果?
情况如下:我有一个文件(data.txt),内容如下:
“大家好!!”
这是我的代码:
执行结果为:
“艾尔沃!”
如果我getc(ptr)
先分配给变量并进行比较,一切都会好起来的。
这两种方法有什么区别?
c - 一个特殊的Segmentation fault,我不知道为什么
这是我的代码,当我跑到 getc() 时。错误发生了......
程序收到信号 SIGSEGV,分段错误。_IO_getc (fp=0x0) at getc.c:37 37 getc.c: 没有那个文件或目录。
c - 甚至在到达 SEEK_END 之前,所有读取文件的 C 函数都会设置 EOF
我正在编写一个 C 程序来在连接到公共网络(只是一个实验室项目)的两台计算机(运行 Windows 操作系统)之间共享文件。当我阅读 .docx 或 .gif 等非 .txt 文件时,我无法获得整个文件。大多数时候,服务器程序向客户端发送了一些空字符(或一些未知字符),而客户端从未收到。这是我的服务器程序:
这是我的客户程序:
然后我想知道我的程序实际读取了多少字节。所以我写了一个简单的程序来读取文件,但这一次,我将使用 fseek 函数找到 EOF 并打印它,读取文件,然后打印它读取的缓冲区长度。这是我使用的代码:
我得到的输出是这样的:
有人可以帮我解决这个问题:(我真的不知道为什么这两个值不同。 它们应该是相等的,对吧?
c - 如何在 C 中读取文件并使用 getc?
我是一名高级 Comp Sci 专业,即将进入我的最后一个学期,在那里我将只参加一门只涉及语言 C 的课程。我试图通过制作一个我构思的相当简单的程序来练习我的技能。我只是想读取一个文件,将其全部内容放入一个数组中,然后遍历这个数组寻找一个拼写出来的字符序列"Waldo"
。换句话说,一种沃尔多在哪里?程序。
我还没有开始使用数组对“Waldo”搜索进行编码,但相反,我只是想测试我对getc()
函数的使用并输出输入文件的内容,但到目前为止,我只收到了源代码看似乱码的错误输出(可能与我错误地使用getc()
返回值的方式有关)。
也许我不应该使用getc()
而是使用scanf()
类型函数?此外,在此处插入和打印出数组时,我非常想掌握按引用指针表示法,所以我想避免使用括号表示法(按值)引用数组元素。诚然,我可能对指针没有最完整的理解。
c - 使用 realloc() 插入动态字符数组
我非常想赶上我的 C 编程技能,所以我开始了自己的自学程序,尝试读取文件并将其内容插入到不同的数据结构中。
在这里,我想专门使用一个动态分配的指针数组。我已经getc()
在另一个类似的程序中成功使用过,但是通过使用静态数组来代替,所以我很想继续使用getc()
这里的函数。
所以在这个新的实现中,在这里,我只是想将输入文件中的所有字符插入到一个数组中,我使用malloc()
. 一次读取一个字符后,我尝试将指针数组的大小调整为每次一个字符的大小,以便在下一次迭代中为下一个字符留出空间。然后,之后,通过新的指针数组[逐个字符]迭代并简单地打印出所有内容。
但是,我收到了分段错误,所以也许我做的有点不对?我将非常感谢任何反馈。
c - 从输入目录中仅读取 .txt 文件,然后将所有内容获取到 C 中的一个数组中
所以我试图创建一个接收输入目录的函数,只检查它的“.txt”文件,然后将所有内容存储到一个字符数组中(这里是动态分配的)。当我对每个文件中的每个字符使用 getc() 时,一次一个,我不仅一次存储每个字符,而且我希望它们一次打印一个字符,以查看是否所有文件正在正确读取。请注意,这里的 else 循环中的所有内容在我制作的另一个程序中仅读取单个输入文件时 100% 正确工作。
这是alphabetcount.c,它只是函数......
这是 testingalphabetcount.c,或者只是 main()...
(注意:alphabetlettercount() 原型存在于两个 .c 文件的 count.h #include 文件中)
对此的输出是...
...如果“ printf("%s\n", in_file->d_name ); ”被放置在“If”循环内,但如果它被放置在“else”循环内,我的输出是......
关于我做错了什么的任何建议?我认为这与 fopen() 使用不正确有关吗?感谢和抱歉长时间阅读!
while-loop - 我们可以使用两种不同的方法在同一个代码块中读取文件吗?
//我用来从文件中读取单词、字符、 空格、换行符的方法 。. 简而言之,只有一个 while 循环被执行。 //我该如何解决?
c - puts() 不会刷新 io 重定向程序中的缓冲区
代码如下:
我使用 gcc10.2.0 成功编译了代码,没有任何警告,与我的期望相反,这两行都输出到标准输出,而不是 /tmp/out 文件中的“hello world”和“重定向完成!” 在标准输出中。当取消注释 fflush(stdout) 时,它可以工作!
我猜 puts() 不会刷新用户空间中的缓冲区,在恢复标准输出并退出后,缓冲区会自动刷新。
gets() 输出字符串,尾随 '\n',当遇到 '\n' 时,stdout 缓冲区将自动刷新。为什么需要手动调用 fflush(stdout)?
c - 如何从控制台为 getc 输入十六进制值
众所周知,如果我们在 ac 源文件中编写类似 "\x61\x61" 的字符串,它实际上表示 "aa"。当从控制台为 getc 或 fgetc 的功能输入一个字符时,无论如何我们只给出一些十六进制值?也许像 '\x61' 但不是 'a'。