入力を確認した後セグメンテーションフォルトがポップアップし、なぜ表示されません。両方の配列のサイズを増加し、除去:私は端末入力からフロートを読み取る際のセグメンテーションフォルト
コード
#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;
}
編集...端末入力から山車の未定義の数を読み取るためにループでfgets
とsscanf
を使用するように指示し、これは私が思い付いたものですましたfeof
[小規模なプログラムをデバッグする方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – alk
こちらもご覧ください:https://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong – Fang
GDBは次のように言っています:soCでの#1 removeSubstring(s = 0x0、toremove = 0x0)の0x00000000004008a7: 9 ' – LethalProgrammer