作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在堆栈上使用的内存非常少,而且我没有递归,而且我所有的内存访问都在堆栈上。那么,为什么我会遇到段错误?
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[]){
FILE *file = fopen("test.cpp", "r");
struct item{
char *type;
int price;
bool wanted;
};
item items[100]; char *temp;
if (file)
cout << "works up to here" << endl;
fscanf(file,
"%s, %[for sale wanted], %d",
items[0].type,
temp,
&items[0].price);
}
打印出来
works up to here
Segmentation fault (core dumped)
最佳答案
您将指针传递给未初始化的 fscanf
。你需要做这样的事情:(如果你使用的是 C)
FILE* file = fopen(...);
char* str = malloc(N);
fscanf(file, "%s", str);
printf("Read %s\n", str);
free(str);
fclose(file);
(如果你实际使用的是 C++)
std::ifstream file(...);
std::string str;
file >> str;
std::cout << "Read " << str << std::endl;
关于c++ - 不明白为什么我会遇到段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006906/
我是一名优秀的程序员,十分优秀!