У меня есть код, который, кажется, работает, но внезапно я начал получать ошибку сегментации при каждом запуске кода.
Надеясь на свежую пару глаз, я мог бы найти проблему.
Он запускает эту строку (printf("There are %d arguments excluding (%s)\n", count-1, *(input));
) и вылетает после.
Я пытался использовать gdb и перебирать свой код, но не могу найти проблему.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int getDiff(char **list[], int n);
int getSum(char *list[], int n);
int main( int count, char *input[] )
{
int total;
printf("There are %d arguments excluding (%s)\n", count-1, *(input));
if(strcmp(*(input+1),"sum") == 0){
int i;
for(i = 2; i<=count;){
printf("%d ", atoi(*(input + 2)));
i++;
if(i < count){
printf("+ ");
}
}
total = getSum(input, count);
}
if(strcmp(*(input+1),"diff") == 0){
total = getDiff(&input, count);
}
printf(" === %d ====", total);
}
int getDiff(char **list[], int n){
int i;
int total = atoi(**(list + 2));
for (i=3; i<= n;) {
int convert;
convert = atoi(**(list + i));
total = total - convert;
i++;
}
return total;
}
int getSum(char *list[], int n){
int i;
int total = atoi(*(list + 2));
for (i=3; i<= n;) {
int convert;
convert = atoi(*(list + i));
total = total + convert;
i++;
}
return total;
}
Должен запускаться и возвращать сумму целых чисел, которые были преобразованы из цифр.
Это то, что говорит GDB
Запрограммировать полученный сигнал SIGSEGV, Ошибка сегментации. 0x00007ffff7b4c196 в __strcmp_sse42 () из /lib64/libc.so.6