我正在尝试在c90中制作一个程序,该程序将从txt文件中读取一些单词并将其复制到矩阵数组中。 似乎编译正常,但是有一个名为“ EXC_BAD_ACCESS(code = 1 adress = 0x68)的线程。您能帮我弄清楚问题出在哪里吗?

int main(int argc, char *argv[]) {

FILE *input;
char words[10][30];
int i,a;

input=fopen("test.txt","rt");
for(i=0;i<10;i++){
    a = fscanf(input,"%s", words[i]);
    printf("%2d %s\n", a, words[i]);

    }
fclose(input);
return 0;

}

===============>>#1 票数:0 已采纳

检查您的文件是否确实在打开,否则printf()将尝试打印出随机内存,该内存可能超出您实际分配的内存范围,并导致错误。

input = fopen("test.txt", "rt");
if (!input)
{
    perror("Failed to open file");
    exit(1);
}

您可能还需要检查a == 1 ,即fscanf()也成功。

  ask by user3216984 translate from so

未解决问题?本站智能推荐:

3回复

如何在ANSI C程序中返回字符串数组?

如何在ANSI C程序中返回字符串数组? 例如:
2回复

如何在其他代码之后的Visual Studio C89中声明可变长度数组

这个问题已经在这里有了答案: 在MS Visual C ++中启用VLA(可变长度数组)? 3个答案 我了解在VS中,所有变量都必须在块的顶部声明,但是如果我想要VLA,即。 如果我想做这样的事情: 上面的代码无效,因为vla必须在顶部声明。 除了创建
7回复

将数组传递给C中的结构

为了用整数填充结构(然后在程序中进一步传递),我认为以下方法可以工作: 但是,这会出现错误“分配中的类型不兼容” 如果我不将此数组传递给结构,请使用以下命令: 它会编译并显示数组的内容。 我意识到可能有一个简单的解决方法,但任何帮助都会很棒! 提前致谢
3回复

在C89中的数组声明中使用sizeof()

我的印象是在C89中无法实现可变大小的数组声明。 但是,当使用clang -ansi编译时,我能够运行以下代码: 这里发生了什么? 那不被认为是可变大小的数组声明吗?
4回复

C中动态分配的数组的大小[重复]

这个问题在这里已有答案: sizeof在可变长度数组上的行为(仅限C) 2个答案 我知道之前已经问过这个问题,但我的问题更具体,这里是代码: 我使用gcc和-ansi选项编译此代码,以限制它仅识别ANSI C。 我知道编译器无法在编译时知道数组的大小,因为
3回复

将ANSI C / C89结构转换为int数组[]

有没有一种有效的方法来将结构分配/转换为数组,反之亦然? 我拥有的结构如下: 基本上,它们包含起点和终点位置的xy坐标。 我需要有效地分配它们,但是目前我只能这样做 我也可以使用复合文字,但是当我使用标志-Wall -pedantic -ansi进行编译时,它在gcc
3回复

C89中的可变长度数组?

我已经读过C89不支持可变长度数组,但是下面的实验似乎反驳了: 当我这样编译时(假设filename是va_test.c ): 有用... 我错过了什么? :-)
2回复

无法使用指针数组编译C89

我正在尝试编译我的C89代码,其中包括指向其他​​各种数组中的位置的指针的数组。 我不断收到ERROR (207) Aggregate or union objects may be initialized with constant expressions only ,这可能是因为我在初始化
2回复

如何在C中(在Visual Studio中)在全局固定大小的数组中设置值?

我的VS2012 Windows Phone项目的一部分在C中。有一天,我一直在努力尝试初始化数组以在其中放入内容。 每当我尝试将其初始化为全局函数(在任何函数之外)时,我都会收到一条消息,告诉我不能使用非const值初始化它。 如果我不使用值对其进行初始化,则会收到一条消息,告诉
3回复

是否有一种类型安全的方法来获取C中的数组元素? [重复]

这个问题在这里已有答案: 可靠地确定数组中 2个 元素的数量 在C中获取数组元素的通常方法是这样的: 这导致了一个整数常量表达式,这也是一个非常好的加法。 问题是它不是类型安全的: int* i; COUNTOF(i); /* compiles :(