Example #1
0
/******************************************************************************
* string_to_dbl_array_fmt()
* Convert a formatted string to an array of doubles
*
* Parameters
* ---------
* - a formatted string
* - nrow is number of rows in converted arrays
* - ncols is the number of columns
*
* Returns
* -------
* - new array
*
* Notes
* -----
* This will take a string with formatting and convert it to an arrays
* Semi-colons are used to deliniate rows of an array.
******************************************************************************/
double *string_to_dbl_array_fmt(char *str, int *nrow, int *ncol )
{
    int     n,j,k;
    double *arr;
    char   *temp;
    char  **strarr;
    //char *dummy;

    if (str == NULL){
        *nrow = 0;
        *ncol = 0;
        return (NULL);
    }

    strarr    = split_string(str, ";",   nrow, DEFAULT);
    strarr[0] = clean_string(strarr[0], NOCOPY);
    *ncol     = num_words_in_string(strarr[0]);

    for (j=1;j<*nrow;j++){
        strarr[j] = clean_string(strarr[j], NOCOPY);
        if( *ncol != num_words_in_string(strarr[j])){
            buff_print("Error: rows and cols dont match\n");
            *nrow = 1; *ncol = 1;
            clear_str_arr(strarr);
            return (NULL);
        }
    }

    n = (*nrow) * (*ncol);
    if (n == 0) {
        clear_str_arr(strarr);
        return( (double *)NULL );
    }
    arr = new_array(n, double);

    n = 0;
    for(j=0;j<*nrow;j++){
        for(k=0;k<*ncol;k++){
            temp = get_word_from_string(strarr[j],k+1);
            arr[n] = atof(temp);
            free(temp);
            n++;
        }
    }
    clear_str_arr(strarr);
    return(&arr[0]);
}
Example #2
0
char *get_line_default(char *prompt, char *default_val)
{
    char *temp1=NULL, *temp2=NULL, *ret;
    int   len;

    buff_print("%s (%s) >", prompt, default_val);
    temp1 = read_line(stdin);
    temp2 = strip_white_space(temp1);
    free(temp1);

    len = string_len(temp2);
    if (len == 0) {
        ret = copy_string( default_val );
        free(temp2);
    }else{
        ret = temp2 ;
    }
    return(ret);
}
Example #3
0
static void pageList(void) {

	char buff[(LCDCOL - 3) * 2];
	char buff2[LCDCOL * 2];
	uint8_t currs;
	uint8_t fstart;

	dispStaticDraw(0);	//рисуем статику

	switch (fileData[0]) {
	case T_FOLDER:	//обычная папка..
		if ((brCrumbs[level][1] & LCDINVBITS)== ((fileData[2]) & LCDINVBITS))currs = (fileData[2]) & LCDBITS;//Это максимальное положение курсора на последней странице
		else
		currs = LCDBITS;
		fstart = fileData[1] + (brCrumbs[level][1] & LCDINVBITS);//номер файла для старта вывода.
		for (uint8_t i = 0; i <= currs; i++) {//пишем из массива для статических папок
			text_print(i + 1, 0, (PGM_P) pgm_read_word(&fileNames[i + fstart]),
					((brCrumbs[level][1] & LCDBITS) == (i)) * 0xFF);
		}
		break;

		case T_DFOLDER:		//динамическая папка
		if ((brCrumbs[level][1] & LCDINVBITS) == ((fileData[2]) & LCDINVBITS))
		currs = (fileData[2]) & LCDBITS;//Это максимальное положение курсора на последней странице
		else
		currs = LCDBITS;
		strncpy_P(buff, (char*) pgm_read_word(&(fileNames[fileData[1]])),
				sizeof(buff));//читаем общее название
		buff[sizeof(buff) - 1] = '\0';
		for (uint8_t i = 0; i <= currs; i++) {
			snprintf(buff2, sizeof(buff2), "%s %d", buff,
					(brCrumbs[level][1] & LCDINVBITS) + i);
			buff_print(i + 1, 0, buff2,
					((brCrumbs[level][1] & LCDBITS) == (i)) * 0xFF);
		}
		break;

		case T_SFOLDER:		//папка выбора параметра
		{
			uint8_t config_folder_view = pgm_read_byte(
					&fileStruct[FILEREW * fileData[1] + 1]);//читаем байт сдвига.
			uint8_t config_folder_data = ConfigRead(
					/*brCrumbs[level][0]+*/config_folder_view);//чтение значения выбора
			if (config_folder_data > fileData[2])
			config_folder_data = fileData[2];
			if (config_folder_view < 0)
			config_folder_view = 0;
			if (brCrumbs[level][2] == 0) {
				brCrumbs[level][1] = config_folder_data;//ставим курсор в выбранную позицию.
				brCrumbs[level][2] = 1;
			}
			if ((brCrumbs[level][1] & LCDINVBITS) == ((fileData[2]) & LCDINVBITS))
			currs = (fileData[2]) & LCDBITS;//Это максимальное положение курсора на последней странице
			else
			currs = LCDBITS;
			fstart = fileData[1] + (brCrumbs[level][1] & LCDINVBITS);//номер файла для старта вывода.
			for (uint8_t i = 0; i <= currs; i++) { //пишем из массива для статических папок
				text_print(i + 1, 0, (PGM_P) pgm_read_word(&fileNames[i + fstart]),
						((brCrumbs[level][1] & LCDBITS) == (i)) * 0xFF);
			}
		}
		break;

	}
	dispHead(header);
	// stringSelect();
}
Example #4
0
char *get_line(char *prompt)
{
    buff_print("%s", prompt);
    return (read_line(stdin));
}