#c
#c
Вопрос:
Я получаю сообщение об ошибке «Исключение, созданное в 0x796BF2F0 (ucrtbased.dll ) в главе 14.exe : 0xC0000005: местоположение чтения 0x00000000 с нарушением доступа.» Как мне это исправить?? Я помещаю внутрь кода, где я получаю ошибку. Я не знаю, как это исправить или исправить. Если бы кто-нибудь мог мне помочь, это было бы фантастически!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
//initialize main
int main(int argc, char* argv[])
{
//define variables
int size = 10;
int numArray[10];
int i, j;
int temp;
srand((unsigned)time(0));
//to generate 10 random numbers in the array
for (i = 0; i < size; i )
{
//generate random values between 1 to 100
//store numbers in variable numArray
numArray[i] = 1 rand() % 100;
}
//sort array based on entry
// if argument is -a or -A sort ascending
if ((strcmp(argv[1], "-a") == 0) || (strcmp(argv[1], "-A") == 0)) {
//This Logic will Sort the Array of elements in Ascending order
for (i = 0; i < size; i ) {
for (j = i 1; j < size; j ) {
if (numArray[i] > numArray[j]) {
temp = numArray[i];
numArray[i] = numArray[j];
numArray[j] = temp;
}
}
}
}
//if argument is -d or -D
else if ((strcmp(argv[1], "-d") == 0) || (strcmp(argv[1], "-D") == 0)) ***I have the error here***
{
//This Logic will Sort the Array of elements in Ascending order
for (i = 0; i < size; i ) {
for (j = i 1; j < size; j ) {
if (numArray[i] < numArray[j]) {
temp = numArray[i];
numArray[i] = numArray[j];
numArray[j] = temp;
}
}
}
}
//print stored array
printf("nnThe sorted array is: n");
//loop to print every element of array
for (i = 0; i < size; i )
{
//Display output
printf("%dt", numArray[i]);
}
return 0;
}
Комментарии:
1. Передаете ли вы ему какие-либо параметры командной строки? Вы должны проверить
argc
в первую очередь.2. OT: комментарии вроде
//initialize main
и//define variables
довольно бессмысленны.
Ответ №1:
Вы вызываете программу без параметров командной строки, поэтому argv[1]
это NULL
и, следовательно strcmp(argv[1], ...
, сбой.
Измените свой код следующим образом:
...
int main(int argc, char* argv[])
{
if (argc < 2)
{
printf("Not enough command line argumentsn");
exit(EXIT_FAILURE);
}
//define variables
...
и вызовите программу с соответствующими параметрами командной строки.