我试图制作一个基本的C程序来读取一个文件,但由于某种原因,当我使用make Test1
运行它时<代码>/Test1 Test1。txt我得到“错误:'s'可能在未初始化的情况下用于此函数”。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char** argv) {
if (argc < 2) {
printf("error\n");
return 0;
}
FILE *fp = fopen(argv[1], "r");
if (fp == NULL) {
printf ("error\n");
return 0;
}
char * s;
int r = fscanf(fp, "%s", s);
while (r != EOF) {
printf("%s\n", s);
r = fscanf(fp, "%s", s);
}
return 0;
}
当您读取设置为NULL的s时,它应该会崩溃,这意味着没有您留出的内存可以读取,它应该会崩溃您的程序,具体取决于操作系统取决于错误
执行char s[1000]
至少会给它一些内存来读取。
问题在于fscanf。它不会分配任何内存,你必须自己完成,例如
char *s = malloc(100); //array s is stored in the heap memory
或
char s[100]; //array s is stored in the stack
为了确保fscanf不会读取超过100个字符(因为这是我们拥有的内存),您必须编写
int r = fscanf(fp, "%99s", s);
我正在学习使用stl向量,这是奇怪的,这个程序不能工作。这有什么问题?如果我想用Vector实现同样的功能,应该怎么做呢?
在这个打印从1到10000000的所有数字、Haskell版本和C版本的简单程序中,为什么Haskell版本如此缓慢,以及哪些命令有助于学习如何提高Haskell程序的性能? 下面是一份报告,包含重现我激动人心的事件所需的所有细节,制作报告时会打印出来源,包括Makefile的来源:
现在我正在学习C++我做了我的第一个小程序加法计算器,我写两个数字,它把它们相加。你能告诉我为什么我的输出是0吗? 输出:
我想知道当您试图捕获StackOverflowError时会发生什么,并提出了以下方法: 现在我的问题是: 为什么这个方法打印'4'? 我想可能是因为在调用堆栈上需要3个段,但我不知道3这个数字来自哪里。当您查看的源代码(和字节码)时,通常会导致比3个多得多的方法调用(因此调用堆栈中的3个段是不够的)。如果这是因为Hotspot VM应用的优化(方法内联),我想知道在另一个VM上结果是否会有所不同
产出:10 它可能是一个整数输出,它也不携带任何垃圾值,但当我将值分配给变量a作为和高于值时,它只是按原样打印输出,告诉我这里发生了什么!
我有这个项目。然后我做以下步骤: 转到 预期结果:错误消息(在浏览器中呈现) 白标签错误页 此应用程序没有 /error的显式映射,因此您将此视为一种退回。星期二八月27 16:59:23CEST 2019有一个意外的错误(类型=未找到,状态=404)。没有可用的消息 如何更改附加的代码,使文件索引代替此错误。是否呈现xhtml? 更新1:如果我去,我得到这个错误: 白标签错误页此应用程序没有/E