Итак, в строке 28 я создаю c-строку под названием temp. Я назначаю значение temp [0] для значения string [index]. Теперь я хочу добавить строку до конца temp, а затем создать строку, хранящую те же значения, что и temp. Я попытался использовать strcat()
, но он дает мне «переполнение буфера». Есть ли какие-либо другие решения, которые я могу попробовать, в основном все, что я хочу, это «string = string [index] + string», если только это возможно в C. Мне нужна программа для запуска с определенной скоростью, поэтому я не хочу использовать цикл, чтобы исправить это.Как я могу вставить один символ перед моей строкой c?
//Problem : Expecto Palindronum
//Language : C
//Compiled Using : GCC
//Version : GCC 4.9.1
//Input for your program will be provided from STDIN
//Print out all output from your program to STDOUT
#include <stdio.h>
#include <string.h>
int main() {
char string[202];
char revstring[202];
gets(string);
int ilength = strlen(string);
int index = ilength - 1;
int i;
for(i = 0; i<(ilength);i++){
int y = index - i;
revstring[i] = string[y];
}
while(1==1){
int length = strlen(string);
if(strcmp(revstring,string)==0){
printf("%d",length);
break;
}else{
char temp[202];
int y;
temp[0] = string[index];
strcat(temp,string); //gives me buffer overflow, any solution to this?
//for(y = 0; y < (length); y++){ //my failed loop
//temp[y+1] = string[y];
//}
int ind = length - index - 1;
revstring[length] = revstring[ind];
memcpy(string,temp,202);
}
}
return 0;
}
«Мне нужна программа для работы с определенной скоростью, поэтому я не хочу использовать цикл, чтобы исправить это». Ummmm ... вы имеете в виду, что ваше назначение ограничивает вас менее чем O (n)? Потому что в противном случае я нахожу невозможным представить себе, что фактические ограничения производительности будут иметь значение таким образом. Несколько сотен ничтожных наносекунд не собираются убивать вас. –
@NathanTuggy хорошо я попробовал его с циклом раньше, и я получил строку, чтобы быть тем, кем я ее хотел, но решение было слишком медленным, чтобы быть приемлемым. –
Включите этот код! Вероятно, существует некоторое патологическое поведение, но это должно быть достаточно простым для оптимизации. –