gpt4 book ai didi

c - 从终端输入读取 float 时出现段错误

转载 作者:行者123 更新时间:2023-11-30 20:20:11 26 4
gpt4 key购买 nike

确认输入后,弹出段错误,我不明白为什么。有人告诉我在循环中使用 fgetssscanf 从终端输入中读取未定义数量的 float ,这就是我想到的..

代码

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define EMPTY 3.141592
#define BUFFERSIZE 100

void removeSubstring(char *s,const char *toremove){
while( (s=strstr(s,toremove)) )
memmove(s,s+strlen(toremove),1+strlen(s+strlen(toremove)));
}

int main(){

int x=0;
int y=0;
float a[BUFFERSIZE] = {EMPTY};
char buffer[BUFFERSIZE] = {EMPTY};
char *pos;
char *start = 0;
int space = ' ';

printf("Input: ");
fgets(buffer, BUFFERSIZE, stdin);

while(x< BUFFERSIZE){
sscanf(buffer, "%f ", &a[x]);
pos = strchr(buffer, space);
removeSubstring(start, pos);
x++;
}

printf("Saved input: ");
while(y<BUFFERSIZE && a[y] != EMPTY){
printf("%.2f", a[y]);
y++;
}

printf("\n");

return 0;
}

编辑:增加数组大小并删除 feof

最佳答案

几乎可以肯定,问题出在 pos = strchr(buffer, space); 行中。如果输入不包含空格字符,则 pos 设置为 NULL。将 NULL 传递给 strstr() 可能会导致 SEGV。

关于c - 从终端输入读取 float 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47259802/

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