我有一個「賦值使指針沒有投射指針」的問題。我以爲我正確鑄造了malloc,但它似乎仍然給我一個警告。警告:賦值使得指針中的整數沒有投射malloc
我最近開始C並開始深入指針和mallocs。
程序是假設提示一個整數(對於字符串有多長) 然後再爲多少空格的提示文本之前問) 提示文本)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAX_LINE 256
int enterIntegerInRange (int min, int max)
{
char line[MAX_LINE];
do{
printf("Please enter an integer between 0-255: ");
fgets(line,MAX_LINE,stdin);
}
while ((0 < min) || (255>max));
}
void enterText (char* text, int length)
{
printf("Please Enter some text: ");
fgets(text,length,stdin);
}
char* createField (int fieldWidth, int numTabs,const char* text)
{
int lengthText = strlen(text);
char* toP = (char*)malloc(fieldWidth + 1);
int i;
for (i = 0; i < numTabs; i++){
toP[i] = " ";}
int j;
for (j = 0; j < lengthText; j++){
toP[numTabs + j] = text[j];}
toP[i]='\0';
return(toP);
}
int main ()
{
char text[MAX_LINE];
int fieldWidth;
int numTabs;
char* fieldPtr;
while (1)
{
fieldWidth = enterIntegerInRange(0,MAX_LINE-1);
if (fieldWidth == 0)
break;
numTabs = enterIntegerInRange(1,fieldWidth-1);
enterText(text,MAX_LINE);
fieldPtr = createField(fieldWidth,numTabs,text);
printf("\"%s\"\n",fieldPtr);
free(fieldPtr);
}
return(EXIT_SUCCESS);
}
的問題是明確是在createField函數中:
toP[i] = " ";
我認爲考慮爲null會起作用。
你能告訴我什麼賦值是一個整數,以及如何去解決這個問題?
你只需要使用''''而不是''「'。而你的問題與'malloc'無關(但不管怎樣,你不應該投射'malloc'的結果)。 – 2014-10-16 20:35:45
可能重複[單引號與雙引號在C](http://stackoverflow.com/questions/3683602/single-quotes-vs-double-quotes-in-c) – 2014-10-16 20:39:17