我试图阅读输入&将字符串存储在char数组中。但是,编译器会返回分段错误。此外,存储字符串不起作用并导致执行文件崩溃。 这是我的代码:
#include <stdlib.h>
#include <math.h>
/*scan functie*/
int inputProducts(int *resourceCost, int *profit, char **productName) {
int amount, i;
printf("number of products: \n");
scanf("%d", amount);
for (i = 0; i < amount; i++) {
printf("product: \n");
scanf("%s", productName[i]);
printf("resource cost for %s: \n", productName[i]);
scanf("%d", &resourceCost[i]);
printf("profit for %s: \n", productName[i]);
scanf("%d", &profit[i]);
}
return amount;
}
int main(int argc, char *argv[]) {
int amount;
int resourceCost[100],profit[100];
char *productName[100];
amount = inputProducts(resourceCost, profit, productName);
return 0;
}
答案 0 :(得分:1)
char *productName[100];
productName
是一个指针数组,它们未初始化为指向任何有效的内存位置。
scanf("%s", productName[i]);
此处输入输入会导致分段错误。
答案 1 :(得分:0)
scanf("%d", &amount);
for (i = 0; i < amount; i++) {
productName[i] = (char *)malloc(sizeof(char));
printf("product: \n");
scanf("%s", productName[i]);
您没有为要存储在productName中的字符串分配任何空间。尝试在for循环中添加此行代码。 它将为每个字符串在堆上创建空间
productName[i] = (char *)malloc(sizeof(char));