Я пытаюсь записать в файл с помощью этой функции.Когда я вызываю функцию с этой строкой, файл остается пустым:
if(argc-optind==0){
char* line=readcli();
printf("testline:%s\n",line); //WORKS
line=replacet(line,t,countt(line));
if(oFlag==1){
writeinfile(line,oFileName);
}else{
printf("Expanded:%s\n",line);
}
}
Но если я называю это так, это работает:
char text[]={"test"};
char * textptr=text;
writeinfile(textptr,fp);
void writeinfile(char* line,char* file){
FILE *f = fopen(file, "a");
if (f == NULL){
printf("Error opening file!\n");
exit(1);
}
fprintf(f, "Some text: %s\n",line);
fclose(f);
}
заменяет вкладки пробелами
char* replacet (char *text, int tabsize, int tabanz){
int newsize=strlen(text)+tabsize*tabanz-tabanz;
char newtext[newsize];//Wenn \t nu ein zeichen ist
char* ptrnew=newtext;
char* ptr=text;
for(int i=0;i<strlen(text);i++,ptr++){
if(text[i]=='\t'){
for(int j=0;j<tabsize;j++){
*ptrnew=' ';
ptrnew++;
}
}else{
*ptrnew=text[i];
ptrnew++;
}
}
char* newtextptr=newtext;
return newtextptr;
}
Читает строку, введенную в интерфейсе командной строки
char* readcli(){
char *buffer;
size_t bufsize = 64;
size_t chars;
buffer = (char *)malloc(bufsize * sizeof(char));
if( buffer == NULL){
perror("Error malloc");
}
printf("Type something with Tabulators: ");
chars = getline(&buffer,&bufsize,stdin);
printf("%zu characters were read.\n",chars);
return buffer;
}
Пожалуйста, помогите мне, я не знаю, как я мог это исправить.Спасибо