【发布时间】:2022-01-22 18:35:53
【问题描述】:
char* scanString()
{
char* str = NULL;
char* temp = NULL;
int numOfChars = 0;
char c = '0';
while (c != '\n')
{
scanf(" %c", &c);
if (c != '\n')
{
if (numOfChars == 0)
{
char* str = (char*)malloc(sizeof(char));
char* temp = str;
if (str == NULL)
return str;
str[0] = c;
numOfChars++;
}
else
{
str = (char*)realloc(str, sizeof(char) * (numOfChars + 1));
str[numOfChars] = c;
if (str == NULL)
return temp;
else
{
temp = str;
numOfChars++;
}
}
}
}
str = (char*)realloc(str, sizeof(char) * (numOfChars+1));
if (str == NULL)
{
str = temp;
return str;
}
str[numOfChars] = '\0';
return str;
}
int main()
{
char* m;
printf("write:\n");
m = scanString();
printf("%s\n", m);
}
我试图创建一个函数来逐个字符地扫描未知大小的字符串,但我不知道这里有什么问题。顺便说一句,请不要接近我任何其他代码或尝试使用不同的库。
【问题讨论】:
-
由于
scanf格式字符串" %c"中的前导空格,scanf函数将跳过所有空格,包括换行符。所以c将永远成为换行符'\n'。 -
你实际上并没有说“问题”是什么。
标签: c string pointers char realloc