我有一个“赋值使指针没有投射指针”的问题。我以为我正确铸造了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