簡體   English   中英

我如何在我的C字符串前面插入一個字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM