gpt4 book ai didi

c - 警告 : assignment makes integer from pointer without a cast malloc

转载 作者:行者123 更新时间:2023-11-30 15:28:53 25 4
gpt4 key购买 nike

我有一个“赋值从指针生成整数而不进行转换”的问题。我以为我正确地转换了 malloc,但它似乎仍然给了我一个警告。

我最近开始使用 C 并开始深入研究指针和 malloc。

程序应该提示输入一个整数(字符串的长度)然后再次询问提示文本前有多少个空格)提示输入文本)

#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 会起作用。

你能告诉我什么赋值使整数以及如何解决这个问题吗?

最佳答案

您应该分配一个字符,而不是字符串:

toP[i] = ' ';

因为赋值右侧的 "" 是两个字符的数组(' ''\0' ),即您实际上正在尝试将 char * 指针分配给 toP 数组的一个元素,即 char

关于c - 警告 : assignment makes integer from pointer without a cast malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26413388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com