2016-12-07 2 views
-1

программирования на C.Как захватить строку из массива

Я работаю на функцию, которая использует GetLine для получения данных от пользователя.

Если первое слово в строке текста S, это вызовет funtion, который сохранит 2Darray в документе.

имя файла будет то, что пользователь вводит после S.

Таким образом, если пользователь был ввести S myfile.txt, функция будет сохранить файл как myfile.txt. Я не могу понять, как захватить строку из aray, которая будет именем файла. Я не думаю, что мой пользователь указателей правильный.

void copy_to_file(char** board, int num_rows, int num_cols, char* filename){ 

    FILE *fp; 
    fp = fopen(filename.txt, "w"); 
    int i =0; 
    int j = 0; 
    for (i = (num_rows - 1); i >= 0; --i) { 
    fprintf("%d ", i); 
    for (j = 0; j < num_cols; ++j) { 
    fprintf("%c ", board[i][j]); 
    } 
    fprintf("\n"); 
    } 
    fprintf(" "); 
    for (i = 0; i < num_cols; ++i) { 
    fprintf("%d ", i); 
    } 
    fprintf("\n"); 

    fclose(f); 

    }//end coppy to board 

    int main(int argc, char** argv) 

    { 
    char** board 
    do 
    { 
     printf("Enter your command: "); 
     fgets(command, 100, stdin); 

    if(command[1] == 's"){ 

    copy_to_file(char** board, int num_rows, int num_cols, char* filename) 

    } 

    }while(!(get_valid_input(command))); 
+2

команда '[1] ==«s "'. Имеет ли ваша программа даже компилировать? Я предполагаю, что это не так. Если это так, то вы должны спросить о том, что, предоставляя точные сообщения об ошибках – kaylum

+0

"функция, использующая getline". Показанный код не вызывает 'getline' в любом месте. Пожалуйста, найдите время, чтобы предоставить правильную информацию. – kaylum

+0

' fprintf' 1-й аргумент 'FILE *' – BLUEPIXY

ответ

0

образец код.

#include <stdio.h> 

int main(void){ 
    char commands[512] = "S myfile.txt\n"; 
    char command, filename[FILENAME_MAX+1]; 

    sscanf(commands, " %c %[^\n]", &command, filename); 
    printf("command:%c, filename:%s\n", command, filename); 
    return 0; 
}