【求助】一个在Devc++里可行,但在洛谷IDE不行的数据输入方式
  • 板块灌水区
  • 楼主GaoKui
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/4/15 21:34
  • 上次更新2023/10/28 03:40:05
查看原帖
【求助】一个在Devc++里可行,但在洛谷IDE不行的数据输入方式
676452
GaoKui楼主2022/4/15 21:34

这样输入数据在Devc++可行,但在洛谷IDE却不可行。有什么办法能改成让洛谷IDE也可行吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

int main(void) 
{
	int *p = NULL;// realloc第一次调用需要指向NULL的指针 
	int count = 0;
	
	do
	{
		p = (int *)realloc(p, (count + 1) * sizeof(int));
		// 并不是简单扩展原内存空间,而是重新分配指定大小的内存空间并复制数据,因此需要把重新分配的空间赋值给原本的空间! 
		if (p == NULL)
		{
			printf("main memory error\n");
			exit(1);
		}
		scanf("%d", &p[count]);// 输入整数存储于 p + count 
		count++;
	}while (getchar() != '\n');// 不能 getchar(ch),ch != '\n'; getchar没有参数,应该直接 getchar() != '\n'
	
	/*
	可以这么理解,在按下回车以前其实都没有读入数据,按下回车后才开始读入
	而空格表示着 scanf的调用结束,每读到一个空格,循环就完成一次。
	每次循环最后会判断是否需要进入下一次循环,此时 getchar吸收掉一个符号(无论空格还是回车)
	这个符号是空格而不是回车,就进入下一次循环,是回车,那就跳出循环 
	*/

    int i;
    for (i = 0; i < count; i++)
    {
        printf("%d ", p[i]);
    }
	
	return 0;
}
2022/4/15 21:34
加载中...