gpt4 book ai didi

c - scanf 将数组传递给函数后出现段错误

转载 作者:行者123 更新时间:2023-11-30 18:41:51 25 4
gpt4 key购买 nike

我正在尝试完成一个研讨会,但在 if 语句中调用 inputVector 函数后出现段错误。我不知道为什么它会给我一个错误。编译时没有警告,并且对数组进行的测试实际上显示了记录的内容。我正在运行 OSX Maverick,但我也在 Linux 系统上进行了测试,但没有成功。如果有人能阐明这一点,我将非常感激。

#include <stdio.h>
#include "matrix.h"

int main() {

int row = 0 , col = 0, option = 0;
int vector[9], result[9];
int matrix[9][9];

do{
printf("Number of rows (0 to exit) ? ");
scanf("%d", &row);
if(row != 0) {
printf("Number of columns ? ");
scanf("%d", &col);

inputMatrix(row, col, matrix);

printf("Pre (0) or Post (1) Multiply ? ");
scanf("%d", &option);

if(option == 0){
inputVector(row, vector);
printf("TESTING 1");
preMulti(row, col, matrix, vector, result);
printf("TESTING 2");
display(col, result);
}
else if(option == 1){
inputVector(col, vector);
postMulti(row, col, matrix, vector, result);
display(row, result);
}

return 0;
}// END IF
} while( row != 0 );// End While

} // End Main

矩阵.cpp

#include "matrix.h"
#include <stdio.h>

void inputMatrix(int row , int col, int matrix[][MAXCOL]) {
for ( int i = 0; i < row; i++) {
printf("Row %d ? ", i + 1);
for ( int k = 0; k < col; k++)
scanf("%d", &matrix[i][k]);
}
}
void inputVector(int size, int vector[]) {
printf("Vector? ");
for(int i = 0; i < size; i++){
scanf("%d" , &vector[i]);
printf(" Recorded %d \n", vector[i]);
}
printf("TESTING 3");
}

void preMulti(int row, int col, int matrix[][MAXCOL], int vector[], int result[]) {
for(int i = 0; i < col; i++ ) {
result[i] = 0;
for( int k = 0; k < row; i++)
result[i] += vector[k] * matrix[k][i];
}
}
void postMulti(int row, int col, int matrix[][MAXCOL], int vector[], int result[]) {
for( int i = 0; i < row; i++ ) {
result[i] = 0;
for( int k = 0; k < col; i++)
result[i] += vector[k] * matrix[i][k];
}
}

void display(int size, int vector[]) {
printf("Result: ");
for ( int i = 0; i < size; i++)
printf("%d ", vector[i]);
}

最佳答案

这是您的问题(至少是导致段错误的问题),这种情况发生在多个地方,preMulti()postMulti():

for( int k = 0; k < row; i++) 

最后应该是 k++,而不是 i++

关于c - scanf 将数组传递给函数后出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com