#include <stdio.h>
#include <stdlib.h>
int main ()
{
char numbers[] = "0x6fffff"; // ваша исходная строка
long int li4 = strtol(numbers, NULL, 0); // получите ваш эквивалент
printf("Десятичный эквивалент распознанного числа:%ld\n", li4);
char buff[100];
sprintf( buff, "%ld", li4 ); // если нужно эквивалент снова сделать строкой
printf("Ваша строка из числа: %s\n", buff);
return EXIT_SUCCESS;
}
/* консоль
Linux ubuntu14 3.13.0-153-generic #203-Ubuntu SMP Thu Jun 14 08:52:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
alexander@ubuntu14:~/tmp$ gcc trans.c -o trans_c
alexander@ubuntu14:~/tmp$ ./trans_c
Десятичный эквивалент распознанного числа:7340031
Ваша строка из числа: 7340031
*/
/* читаем из файла требуемое кол. строк ROWS или до конца файла EOF
* (что наступит раньше), формируем строку по конечному символу '\n'
* в файле, затем добавляем завершающий '\0' и полученную строку СИ
* записываем
* в двумерный массив по 1-й строке в каждый элемент массива.
* Затем массив выводим на консоль. Есть подсчет считанных строк.
* См также ниже мой коммент
*/
/* file_in находится в каталоге программы и имеет вид:
I am a human 1
I am a 2 human`s 2
I am a 3 human 3
Nmjh## ___ 987 ht!
5555555555555555
66666666666666
77777777777777
8888888888888888
*/
#include <stdio.h>
#include <stdlib.h> /* prototype exit() */
#include <string.h>
#define ROWS 7
#define COLS 20
void file_open(void);
FILE * file_in;
char ch, arr_str[ROWS][COLS];
int j, i, count = 0;
int main(int agrc, char * argv[]){
file_open();
for(j = 0; j < ROWS; ++j){
for(i = 0; (ch=getc(file_in)) != '\n' && (ch != EOF); ++i) {
arr_str[j][i] = ch; // заполнение строки
} //конец внутреннего for
if(ch == EOF){
puts("достигнут конец файла, выход.");
fprintf(stdout, "count is: %i \n", count);
break;
} // конец if
else{
arr_str[j][i] = '\0';
++count;
} // конец else
} // конец внешнего for
fclose(file_in);
/* вывод массива на консоль */
fprintf(stdout, "Из файла считано %i строк, которые имеют вид:\n", count);
puts(""); // пропуск строки
for(j = 0; j < count; ++j){
fprintf(stdout, "%s\n", arr_str[j]);
}
puts(""); // пропуск строки
puts("Программа завершена.");
exit(EXIT_SUCCESS);
}
void file_open(void){
if( (file_in = fopen("file_in", "r")) == NULL){
fprintf(stdout, "%s\n", "не могу отрыть файл для чтения");
exit(EXIT_FAILURE);
}
}
/*
Вывод на консоль:
Из файла считано 7 строк, которые имеют вид:
I am a human 1
I am a 2 human`s 2
I am a 3 human 3
Nmjh## ___ 987 ht!
5555555555555555
66666666666666
77777777777777
Программа завершена.
*/
/* ваши комменты */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 50
char buff[SIZE] = {0};
int main(int argc, char * argv[]){
int i, j, num1, num2;
char c = '.'; // искомый символ
char * str_ptr1;
char * str_ptr2;
puts("введите произвольную строку");
gets(buff);
str_ptr1 = strchr(buff, c);
str_ptr2 = strrchr(buff, c);
if (str_ptr1 == 0){
puts("искомого символа нет в строке");
exit(EXIT_FAILURE);
}
else if (str_ptr2 == 0 || str_ptr2 == str_ptr1){
fprintf(stdout, "%s", "Искомый символ единичен в строке");
exit(EXIT_FAILURE);
}
size_t len = strlen(buff);
i = 0;
while(buff[i] != '\0'){
if(buff[i] == c && buff[i+1] == c){
num1 = i + 1;
while(buff[i+1] == c){
++i;
num2 = i;
}
for(j = 0; j <= (len - num2 + 1); ++j){
buff[num1 + j] = buff[num2 + 1 + j];
}
}
++i;
}
puts("Итоговая строка имеет вид: ");
puts(buff);
exit(EXIT_SUCCESS);
}
/* в консоли:
введите произвольную строку
...abc...de
Итоговая строка имеет вид:
.abc.de
введите произвольную строку
ngt,,,
искомого символа нет в строке
*/
#include <stdio.h>
/*прототип функции вычисления суммы массива*/
int summarr(int *, int);
int arr1[] = {1,2,3,4,5,13,27};
int arr2[] = {6,7,8,9,10, 101};
int main(int argc, char * argv[]){
int summ_arr1 = 0, summ_arr2 = 0, i;
/*вызываем функцию вычисления суммы массива*/
summ_arr1 = summarr(arr1, sizeof arr1/sizeof(int));
summ_arr2 = summarr(arr2, sizeof arr2/sizeof(int));
/*сравниваем суммы и выводим значение большей из них*/
fprintf(stdout, "%i ", (summ_arr1 > summ_arr2 ? summ_arr1 : summ_arr2));
if(summ_arr1 > summ_arr2)
fprintf(stdout, "большее значение summ_arr1\n");
else if(summ_arr1 < summ_arr2)
fprintf(stdout, "большее значение summ_arr2\n");
else
fprintf(stdout, "массивы равны");
return 0;
}
int summarr(int *arr , int size){
int i, summ_arr = 0;
for (i = 0; i < size; i++){
summ_arr += *(arr + i);
}
return summ_arr;
}
/*
Linux alexander-Inspiron-3521 3.13.0-74-generic #118-Ubuntu SMP Thu Dec 17 22:52:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
вывод в консоли:
$ make sizeof
cc sizeof.c -o sizeof
alexander@alexander-Inspiron-3521:~$ ./sizeof
141 большее значение summ_arr2
*/
#include <stdio.h>
char * arr_char = "I am a 1";
typedef char * type_p;
/* создаем указатель на указатель */
type_p * parr_char = &arr_char;
int main( int argc, char * argv[]){
// вывод строки через двойную **
while( **parr_char != '\0' ) {
printf("%c", **parr_char);
(*parr_char)++;
}
printf("\n");
// вывод строки через одинарную *
arr_char = &"I am a 1"[0]; // возвращаем указатель на начало строки
//arr_char = "I am a 1"; // или так возвращаем указатель на начало строки
//arr_char = arr_char - 8; // или так на начальный размер strlen(arr_char)
while( *arr_char != '\0' ) {
printf("%c", *arr_char);
arr_char++;
}
printf("\n");
return 0;
}
/*
Linux alexander-Inspiron-3521 3.13.0-74-generic #118-Ubuntu SMP Thu Dec 17 22:52:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
имеем в консоли
./tmp_str
I am a 1
I am a 1
*/
/* вывод символа # в строках и столбцах - читайте и разбирайтесь на здоровье. Если нужен интерактивный ввод - сами допишите. Это на гистограмму не влияет :-) */
#include <stdio.h>
int main(void)
{
int total = 9;
for(int i = 2; i <= total; ++i) {
for(int j = 1; j <= i; ++j) {
printf("#");
}
printf("\n");
}
return 0;
}
/* ВЫВОД
alexander@alexander-Inspiron-3521:~/my$ gcc -std=c99 output.c -o 4_16 && ./output
##
###
####
#####
######
#######
########
#########
*/
#include <stdio.h>
#include <string.h>
void ptrTest(const char * ); //здесь имя не нужно
int main(int argc, const char * argv[]) {
const char * superString = "qwe rty uio"; // тк "qwe rty uio" это строковый литерал (константа), то используйте const char *
ptrTest(superString);
return 0;
}
void ptrTest(const char * testString) {
printf("%s\n", testString); //выведет строку.
printf("\n");
printf("%p\n", testString); //выведет адрес 1-го элемента строки (имя массива - есть адрес его 1-го элемента)
}
/*
У меня(но суть такая же будет и в windows):
Linux alexander-Inspiron-3521 3.13.0-74-generic #118-Ubuntu SMP Thu Dec 17 22:52:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Вывод в консоли
$ gcc toster_ru.c -o toster_ru && ./toster_ru
qwe rty uio
0x4006b4
*/