簡體   English   中英

賦值使指針從整數開始而不進行強制轉換[默認啟用]

[英]assignment makes pointer from integer without cast [enabled by default]

我已經用谷歌搜索了,看到了很多答案,但是都不適合我的情況。 這是我的main():

char * cString;
puts("Please enter data you want to encrypt.");
cString = getInput(cString, &iStringSize);
printf("The message is: %s\n\n", cString);

char * strEncrypt;
strEncrypt = encrypt(cString, offset);
printf("The encrypted message is: %s\n\n", strEncrypt);

return 0;

該程序基本上讀取任意輸入,然后對其進行加密。 這是getInput函數:

char * getInput(char *cString, int * iStringSize)
{
    puts("Begin reading input.");
    char buffer[CHUNK];
    int iBufferSize;
    while(fgets(buffer, CHUNK - 1, stdin) != NULL)
    {
        iBufferSize = strlen(buffer);
        *iStringSize += iBufferSize;
        cString = realloc(cString, sizeof(char) * (*iStringSize + 1));
        strcat(cString, buffer);
    }
    printf("String size is: %d\n", *iStringSize);
    puts("Reading successful");
    return cString;
}

如上所示,cString是char指針。 getInput函數還返回char指針。 但是,我不斷收到消息:賦值使指針從整數開始而沒有強制轉換[默認啟用]

當我編譯代碼時會發生這種情況。

此功能也發生了同樣的情況

char * encrypt(char *str, int offset)
{
    puts("Begin encryption.");
    char * strEncrypt = malloc(sizeof(char) * (strlen(str) + 1));
    int i;
    for(i = 0; i < strlen(str); i++)
    {
        //substitution algorithm using int offset variable.
        //I accessed str and strEncrypt using pointer arithmetic
    }

    puts("Encryption success!");
    return strEncrypt;
}

請不要對realloc的錯誤處理提出任何建議。

在首次使用前聲明getInpyt並加密函數,否則編譯器會假定這些函數返回int並接受可變數量的參數。

您可以使用以下三種方式中的任何一種來聲明它們。

  1. 包含包含其聲明的適當頭文件。
  2. 在您首次訪問聲明之前,請在全局范圍或本地范圍中手動包括聲明。
  3. 在首次訪問它們之前,請移動這些函數的定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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