-2

我有一个程序,旨在将 10 个整数从一个数组复制到另一个数组。它正在编译,没有任何错误。它如下: -

/* Program to copy a string from one array to another array and print the second array */
#include<stdio.h>
#include<conio.h>
#define MAX 10
void main()
{
    int s[MAX]; // Original array
    int c[MAX]; // Array which contains the copied contents of s[MAX]
    int i;
    printf("Enter the string of 10 characters");
    for(i=0;i<MAX;i++)  // Storing elements in the original array
    {
        scanf("%d",s[i]);
    }
    for(i=0;i<MAX;i++)
    {
        printf("%d",s[i]);
    }
    printf("\n");
    for(i=0;i<MAX;i++)  /*Copying the elements from the original array into the duplicate array*/
    {
        c[i]=s[i];
    }
    for(i=0;i<MAX;i++) //Printing the duplicate array
    {
        printf("%d",c[i]);
    }
}

它甚至没有打印原始数组。更不用说重复数组了,这是程序的后半部分。

4

4 回答 4

6

scanf("%d",s[i]);应该读scanf("%d",&s[i]);

于 2013-01-01T13:55:54.740 回答
4

你忘&scanf。代码应该是:scanf("%d",&s[i]);. 为什么?您只需为函数提供应更改值的变量的地址。如果没有指针,函数将无法更改值。

例子:

int function1(int a) {
    a = 10;
}

int function2(int* a) {
    *a = 20;
}

(...)
int a = 5;
function1(a);
printf("%d\n", a); /* a is still 5 */
function2(&a);
printf("%d\n", a); /* a is now 20 */
于 2013-01-01T13:56:25.820 回答
2

您应该&scanf

scanf("%d",&s[i]);
于 2013-01-01T13:57:14.380 回答
2

该函数scanf需要一个指向整数的指针作为参数。由于s[i]返回数组 s 中索引 i 处的整数值而不是指向它的指针,因此scanf尝试将扫描的值存储到导致程序崩溃的无效内存位置。

改为使用&s[i]以提供scanf指针。

于 2013-01-01T14:13:54.027 回答