在新的C++代码中,我倾向于使用C++ iostream库而不是C stdio库.
我注意到一些程序员似乎坚持stdio,坚持认为它更便携.
这是真的吗?有什么好用的?
我去了一个采访中,我被问到这个问题:
您对以下内容有何看法?
Run Code Online (Sandbox Code Playgroud)int i; scanf ("%d", i); printf ("i: %d\n", i);
我回答了:
我做出的回应是错误的.我不堪重负.
在那之后他们解雇了我:
在某些情况下,程序会崩溃并导致核心转储.
我不明白为什么程序会崩溃?谁有人解释我的原因?任何帮助赞赏.
在Perl中,我可以键入:
$|++;
Run Code Online (Sandbox Code Playgroud)
打印到STDOUT的任何内容都将自动fflush()编辑.
C中有等价物吗?换句话说,有什么方法可以告诉stdio在每次printf()之后自动刷新stdout,它会自动刷新stderr吗?
我正在编写一个将文件读入内存的C库.它会跳过文件的前54个字节(标题),然后将余数作为数据读取.我使用fseek来确定文件的长度,然后使用fread来读取文件.
循环运行一次然后结束,因为达到了EOF(没有错误).最后,bytesRead = 10624,ftell(stream)= 28726,缓冲区包含28726个值.我希望fread读取30,000字节,当达到EOF时文件位置为30054.
C不是我的母语所以我怀疑我在某个地方有一个愚蠢的初学者错误.
代码如下:
const size_t headerLen = 54;
FILE * stream;
errno_t ferrno = fopen_s( &stream, filename.c_str(), "r" );
if(ferrno!=0) {
return -1;
}
fseek( stream, 0L, SEEK_END );
size_t bytesTotal = (size_t)(ftell( stream )) - headerLen; //number of data bytes to read
size_t bytesRead = 0;
BYTE* localBuffer = new BYTE[bytesTotal];
fseek(stream,headerLen,SEEK_SET);
while(!feof(stream) && !ferror(stream)) {
size_t result = fread(localBuffer+bytesRead,sizeof(BYTE),bytesTotal-bytesRead,stream);
bytesRead+=result;
}
Run Code Online (Sandbox Code Playgroud)
根据您使用的参考,很明显在模式标志中添加"b"就是答案.寻求骷髅徽章的提名.:-)
该引用在第二段,第二句(虽然不在他们的表中)中讨论它.
MSDN直到页面中间才讨论二进制标志.
OpenGroup提到了"b"标签的存在,但声明它"应该没有效果".
我知道在C++中,您可以使用以下方式查看下一个字符:in.peek();.
当我试图"查看"C中文件的下一个字符时,我该怎么做呢?
我使用以下C代码从用户获取输入,直到EOF发生,但问题是此代码不起作用,它在第一次输入后终止.任何人都可以告诉我这个代码有什么问题.提前致谢.
float input;
printf("Input No: ");
scanf("%f", &input);
while(!EOF)
{
printf("Output: %f", input);
printf("Input No: ");
scanf("%f", &input);
}
Run Code Online (Sandbox Code Playgroud) 这有很大的麻烦......
printf("> ");
int x = getchar();
printf("got the number: %d", scanf("%d", &x));
Run Code Online (Sandbox Code Playgroud)
> 1234
got the number: 1
Run Code Online (Sandbox Code Playgroud) 我已经开始学习一些C作为一种爱好并且已经盲目地使用FILE作为文件指针的声明很长一段时间了,我一直在想.这是C的关键字或特殊数据类型来处理文件吗?它是否包含文件内的流和其他数据?为什么它被定义为指针?
一个例子来说明我的意思,使其更清晰:
FILE* fp; //<-- this
fp = fopen("datum.txt", "r");
while(!feof(fp)) {
// etc.
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序来解析保存为文本文件的一些数据.我想要做的是找到大海捞针中每根针的位置.我已经可以读取文件并确定出现次数,但我也希望找到索引.