关于输入一段整形数据,空格分开,用一段程序统计数据个数
#include <stdio.h>int main()
{
int i=0;
char *temp; //定义一个字符指针
printf("请输入数据,并用空格分开:");
while(getchar()!=EOF) //EOF是监测输入的数据是否完毕
{
getchar(); //用getchar在循环体里面一个一个的接受缓存中的字符数据
*temp=getchar(); //接收到的单个字符数据赋值给指针
if(getchar()==' ') //如果接收到的字符是空格键,则认为对应一个数据,技术变量i加1
{
i++; }
temp++; // 指针指向下一个字符单元接受getchar接受到的字符
}
printf("这份数据共有%d份数据。",i); //打印出统计空格键的计数i,就是整形数据的数量
return 0;
}
我感觉整个逻辑没有问题啊,但是为什么编译过去了,运行时输入一段数据后,运行的界面就运行错误报警? 本帖最后由 xieglt 于 2020-10-16 12:58 编辑
char * temp 没分配内存!
简单点
char * temp;
char buffer;
temp = buffer;
...
或者
#include <stdlib.h>
char * temp;
temp = (char *)malloc(1024);
...
free(temp); 本帖最后由 xieglt 于 2020-10-16 13:25 编辑
如果你不需要保存输入的数据,只需要统计输入的数据有几份,可以这么写。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i=0;
char c1,c2;
c2= ' ';
printf("请输入数据,并用空格分开:");
while((c1 = getchar())!= '\n')
{
c2 = c1;
if(c2 == ' ')
{
i++;
}
}
if(c2 != ' ')
{
i++;
}
printf("这份数据共有%d份数据。",i);
return 0;
}
如果需要保留输入内容,可以这么写
#include <stdio.h>
#include <stdlib.h>
#define MEM_SIZE (12)
int main(void)
{
int i=0;
int count = 0;
int oldSize = 0;
char c1,c2;
char * buffer;
char * temp;
buffer = (char *)malloc(MEM_SIZE);
temp = buffer;
printf("请输入数据,并用空格分开:");
c2 = ' ';
while((c1 = getchar())!= '\n')
{
c2 = c1;
temp = c2;
if(count >= MEM_SIZE)
{
oldSize += MEM_SIZE;
buffer = (char *)realloc(buffer,oldSize + MEM_SIZE);
temp = buffer + oldSize;
count = 0;
}
if(c2 == ' ')
{
i++;
}
}
temp = 0;
if(c2 != ' ')
{
i++;
}
printf("这份数据共有%d份数据。",i);
free(buffer);
return 0;
}
页:
[1]