问题标签 [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.

0 投票
0 回答
36 浏览

c - 如何在 ferror 文件中发出错误信号

假设我有这个代码:

有没有办法手动导致文件出错,这ferror是真的,而不会将模式更改fopen为“w”?(这会导致错误,因为我们myfile以写入模式打开,但我们使用getc.

0 投票
2 回答
112 浏览

c - 为什么不能使用“getc(f)) != EOF”直接比较?

我是 C 语言的新手,现在遇到这样的问题:如果我使用上面的表达式在文件中打印字符串,为什么会得到一个奇怪的结果?

情况如下:我有一个文件(data.txt),内容如下:

“大家好!!”

这是我的代码:

执行结果为:

“艾尔沃!”

如果我getc(ptr)先分配给变量并进行比较,一切都会好起来的。

这两种方法有什么区别?

0 投票
1 回答
54 浏览

c - 一个特殊的Segmentation fault,我不知道为什么

这是我的代码,当我跑到 getc() 时。错误发生了......

程序收到信号 SIGSEGV,分段错误。_IO_getc (fp=0x0) at getc.c:37 37 getc.c: 没有那个文件或目录。

0 投票
1 回答
49 浏览

c - 甚至在到达 SEEK_END 之前,所有读取文件的 C 函数都会设置 EOF

我正在编写一个 C 程序来在连接到公共网络(只是一个实验室项目)的两台计算机(运行 Windows 操作系统)之间共享文件。当我阅读 .docx 或 .gif 等非 .txt 文件时,我无法获得整个文件。大多数时候,服务器程序向客户端发送了一些空字符(或一些未知字符),而客户端从未收到。这是我的服务器程序:

这是我的客户程序:

然后我想知道我的程序实际读取了多少字节。所以我写了一个简单的程序来读取文件,但这一次,我将使用 fseek 函数找到 EOF 并打印它,读取文件,然后打印它读取的缓冲区长度。这是我使用的代码:

我得到的输出是这样的:

有人可以帮我解决这个问题:(我真的不知道为什么这两个值不同。 它们应该是相等的,对吧?

0 投票
2 回答
322 浏览

c - 如何在 C 中读取文件并使用 getc?

我是一名高级 Comp Sci 专业,即将进入我的最后一个学期,在那里我将只参加一门只涉及语言 C 的课程。我试图通过制作一个我构思的相当简单的程序来练习我的技能。我只是想读取一个文件,将其全部内容放入一个数组中,然后遍历这个数组寻找一个拼写出来的字符序列"Waldo"。换句话说,一种沃尔多在哪里?程序。

我还没有开始使用数组对“Waldo”搜索进行编码,但相反,我只是想测试我对getc()函数的使用并输出输入文件的内容,但到目前为止,我只收到了源代码看似乱码的错误输出(可能与我错误地使用getc()返回值的方式有关)。

也许我不应该使用getc()而是使用scanf()类型函数?此外,在此处插入和打印出数组时,我非常想掌握按引用指针表示法,所以我想避免使用括号表示法(按值)引用数组元素。诚然,我可能对指针没有最完整的理解。

这是输出...

0 投票
1 回答
129 浏览

c - 使用 realloc() 插入动态字符数组

我非常想赶上我的 C 编程技能,所以我开始了自己的自学程序,尝试读取文件并将其内容插入到不同的数据结构中。

在这里,我想专门使用一个动态分配的指针数组。我已经getc()在另一个类似的程序中成功使用过,但是通过使用静态数组来代替,所以我很想继续使用getc()这里的函数。

所以在这个新的实现中,在这里,我只是想将输入文件中的所有字符插入到一个数组中,我使用malloc(). 一次读取一个字符后,我尝试将指针数组的大小调整为每次一个字符的大小,以便在下一次迭代中为下一个字符留出空间。然后,之后,通过新的指针数组[逐个字符]迭代并简单地打印出所有内容。

但是,我收到了分段错误,所以也许我做的有点不对?我将非常感谢任何反馈。

0 投票
1 回答
98 浏览

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() 使用不正确有关吗?感谢和抱歉长时间阅读!

0 投票
1 回答
13 浏览

while-loop - 我们可以使用两种不同的方法在同一个代码块中读取文件吗?

//用来从文件中读取单词、字符、 空格换行符的方法. 简而言之,只有一个 while 循环被执行。 //我该如何解决?

0 投票
2 回答
157 浏览

c - puts() 不会刷新 io 重定向程序中的缓冲区

代码如下:

我使用 gcc10.2.0 成功编译了代码,没有任何警告,与我的期望相反,这两行都输出到标准输出,而不是 /tmp/out 文件中的“hello world”和“重定向完成!” 在标准输出中。当取消注释 fflush(stdout) 时,它可以工作!

我猜 puts() 不会刷新用户空间中的缓冲区,在恢复标准输出并退出后,缓冲区会自动刷新。

gets() 输出字符串,尾随 '\n',当遇到 '\n' 时,stdout 缓冲区将自动刷新。为什么需要手动调用 fflush(stdout)?

0 投票
1 回答
150 浏览

c - 如何从控制台为 getc 输入十六进制值

众所周知,如果我们在 ac 源文件中编写类似 "\x61\x61" 的字符串,它实际上表示 "aa"。当从控制台为 getc 或 fgetc 的功能输入一个字符时,无论如何我们只给出一些十六进制值?也许像 '\x61' 但不是 'a'。