Я относительно новичок в программировании (несколько месяцев), и я пытаюсь решить некоторые проблемы USACO. Когда я представил свою программу, он сказал следующее:Ошибка сегментации - сигнал 11
Run 1: Execution error: Your program (`palsquare') exited with signal #11 (segmentation violation [maybe caused by accessing memory out of bounds, array indexing out of bounds, using a bad pointer (failed open(), failed malloc), or going over the maximum specified memory limit]). The program ran for 0.005 CPU seconds before the signal. It used 2168 KB of memory.
Я не могу найти разыменованные нулевые указатели, которые я изначально думал, была проблемой.
Вот мой код (я программировал на языке C)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <math.h>
int ispal(char *square)
{
char *temp;
temp = square + strlen(square) - 1;
for(temp = square + strlen(square) - 1; square < temp; square++, temp--)
{
if(*square != *temp)
return 0;
}
return 1;
}
void convert(char *square, int n, int base)
{
int len;
if(n == 0)
{
square = "";
return;
}
convert(square, n/base, base);
len = strlen(square);
square[len] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[n % base];
square[len + 1] = '\0';
}
int main()
{
char square[100];
char temp[100];
int i, base;
FILE *fin, *fout;
fin = fopen("palsquare.in", "r");
fout = fopen("palsquare.out", "w");
fscanf(fin, "%d", &base);
for(i = 1; i <= 300; i++)
{
convert(square, i * i, base);
if(ispal(square))
{
convert(temp, i, base);
fprintf(fout, "%s %s\n", temp, square);
}
}
return 0;
}
Выполняется ли программа на вашей собственной машине? Вы пробовали valgrind или отладчик? –
Нет, программа выходит из строя, и я не знаю, как использовать отладчик Dev C++ (опять же, я довольно новый: P) – user1293841284
Используйте 'strcpy()' для назначения строк, а не 'square =" "'. – Barmar