[英]how can i insert a single char in front of my c string?
因此,在第28行,我制作了一個名為temp的C字符串。 我將temp [0]的值分配給string [index]的值。 現在我想將字符串添加到temp的末尾,然后使字符串存儲與temp相同的值。 我嘗試使用strcat()
但是它給了我“檢測到緩沖區溢出”。 我還有其他解決方案可以嘗試嗎,如果我只能在C語言中使用,基本上我想要的只是“ string = string [index] + string”。我需要程序以一定速度運行,所以我不想使用一個循環來解決這個問題。
//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;
}
您的代碼有很多問題。 我只解決您有關緩沖區溢出(段錯誤)的問題。
來自man strcat:
strcat()函數將src字符串附加到dest字符串,覆蓋dest末尾的終止空字節('\\ 0'),然后添加一個終止空字節。
但是,dest末尾沒有終止的空字節。 要解決當前的問題:
temp[0] = string[index];
temp[1] = 0;
我還要提些什么?
從人那里得到:
錯誤:切勿使用gets()。 因為無法不事先知道數據就無法判斷將讀取多少個字符,並且由於gets()將繼續存儲緩沖區結束后的字符,所以使用它非常危險。 它已被用來破壞計算機的安全性。 使用fgets()代替。
了解以null結尾的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.