Предполагается, что моя программа читает из stdin и передает ввод в систему - в случае, если ввод не равен «выход».
Это прекрасно работает, если второй вход не длиннее первого.
Например, если первый вход «hello», а второй «hellohello», вход делится на «hello» и «ello».
Я предполагаю, что проблема в том, что буфер s не очищается должным образом во время цикла. Поэтому я использовал memset()
, но, к сожалению, я не получил результаты, которые искал.
Кто-нибудь может увидеть ошибку?
Большое спасибо!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1024
int main(){
char *s = (char *)malloc(MAX);
char *temp = NULL;
while(fgets(s, (sizeof(s)-1), stdin)!= NULL){
temp = s+(strlen(s)-1);
*temp = '\0';
if (strcmp(s,"exit")==0){
break;
} else {
system(s);
}
memset(s, 0, MAX);
}
free(s);
return 0;
}