У меня почти весь ушёл на одну мизерную программу, чтобы написать без ошибок и то сомневаюсь.
Ищет символ в строке. Большего ничего не делает:#include <stdio.h>
int main(int argc, char *argv[])
{
char * str=argv[2];
char * patrn=argv[1];
if (argc < 2) {
printf("Enter a symbol and string\n");
return 0;
}
if (patrn[1] !='\0') {
printf("Enter just one symbol\n");
return 0;
}
if (argc < 3 ) {
printf("Enter pattern and string\n");
return 0;
}
if (argc > 3 ) {
printf("Use double \" \" quotes for strings containing spaces\n");
return 0;
}
int j =0;
while (str[j] != 0) {
if (patrn[0] == str[j]) {
printf("Found: %c in position %d", str[j], j);
break;
return 1;
}
++j;
}
return 0;
}
уважаемый, я всё понимаю,
но это не школа начинающих погромистовдля начала прочитайте "Brian W. Kernighan, Dennis Ritchie - C Programming Language - 2E"
желательно на английском,
а потом идите на профильные форумы
> уважаемый, я всё понимаю,
> но это не школа начинающих погромистов
> для начала прочитайте "Brian W. Kernighan, Dennis Ritchie - C Programming Language
> - 2E"
> желательно на английском,
> а потом идите на профильные форумыКак раз эту книгу я сейчас и читаю.
С нашим образованием эдак лет через пяток для программера "Hello world!" будет считать очень круто ...
>> уважаемый, я всё понимаю,
>> но это не школа начинающих погромистов
>> для начала прочитайте "Brian W. Kernighan, Dennis Ritchie - C Programming Language
>> - 2E"
>> желательно на английском,
>> а потом идите на профильные форумы
> Как раз эту книгу я сейчас и читаю.Книга то хорошая, но это не первый учебник с которого стоит начинать
>>> уважаемый, я всё понимаю,
>>> но это не школа начинающих погромистов
>>> для начала прочитайте "Brian W. Kernighan, Dennis Ritchie - C Programming Language
>>> - 2E"
>>> желательно на английском,
>>> а потом идите на профильные форумы
>> Как раз эту книгу я сейчас и читаю.
> Книга то хорошая, но это не первый учебник с которого стоит начинатьВы не переживайте и не слушайте грубиянов с синдромом Даннига-Крюгера. Учитесь и все будет хорошо. Вот моя прога (сырая, но работает). Она не только ищет вводимый вами символ для поиска в файле, но и указывает строки где нашла и подсчитывает все, что нужно. Удачи вам. Не бросайте учебу.
#include <stdio.h>
#include <stdlib.h> // для exit(EXIT_FAILURE)
#include <string.h>
#include "myheader.h"extern char str_arr[str][col]; // массив определен в main.c
/* ф-я принимает искомый символ ch, указ. на файл f_ptr, кол. строк в файле и столбцов f_str, f_col и два указателя на счетчики совпадений искомого символа в строках и в файле вцелом fc_ptr и c_ptr ВОЗВРАЩАЕТ указатель на счетчик числа совпадений символа по всему файлу fc_ptr) */
int * find_char_infile(char ch, FILE * f_ptr, int f_str, int f_col, int * fc_ptr, int * c_ptr){
//int file_count = 0;
for (int i = 0; i < f_str; i++){
fgets(str_arr[i], f_col, f_ptr);
if(strchr(str_arr[i], ch) != NULL){ // ф-я strchr(str_arr[i], argv[1][0]) ищет вхождение символа argv[1][0] в строку str_arr[i] и если он там сеть, возвр. его адрес(символа), если нет - NULL
//int count = 0;
for(int j = 0; j< f_col; j++){ // проходим строку по всем символам col
if(str_arr[i][j] == ch){
//++count; // счетчик совпадений для СТРОКИ
//++file_count; // счетчик совпадений для ФАЙЛА
++(*fc_ptr); // счетчик совпадений для ФАЙЛА
++(*c_ptr); // счетчик совпадений для СТРОКИ
}
}
printf("символ \"%c\" встречается %i раз(а) в строке %s", ch, *c_ptr, str_arr[i]);
//count = 0;
*c_ptr = 0;
} //конец блока if
} // конец блока for
//printf("искомый символ встретился в файле %i раз(а)\n", *fc_ptr);
return fc_ptr;
}
Может сначала нужно научится работать со временем? И датой?
Если что, то я имел ввиду - НАДО НАУЧИТСЯ ЧИТАТЬ ЭТИ ПАРАМЕТРЫ НА ПОСТАХ.
> Как раз эту книгу я сейчас и читаю.Тут соль ученья в том, что есть языки, а есть алгоритмы. Более важное для рутины и работы - знать шаблоны и алгоритмы. Талант - уметь их на ходу красиво выдумывать и изобретать.
А какой язык - это не очень важно. У каждого языка есть способрешить задачку более или менее красиво, это нужно бы уметь применять. Но соль ученья немного в другом: знать алгоритмы, уметь выбирать подходящий под задачу алгоритм и язык, зная особенности языка, красиво решить. Язык чаще выбирается глобально один раз под всю задачу, дальше уже маневрируешь - как оптимальнее решать на этом языке микрозадачки, как решать части большого. Но можно и из Шелл скрипта вызвать Перл, если уместно.
>[оверквотинг удален]
> Тут соль ученья в том, что есть языки, а есть алгоритмы. Более
> важное для рутины и работы - знать шаблоны и алгоритмы. Талант
> - уметь их на ходу красиво выдумывать и изобретать.
> А какой язык - это не очень важно. У каждого языка есть
> способрешить задачку более или менее красиво, это нужно бы уметь применять.
> Но соль ученья немного в другом: знать алгоритмы, уметь выбирать подходящий
> под задачу алгоритм и язык, зная особенности языка, красиво решить. Язык
> чаще выбирается глобально один раз под всю задачу, дальше уже маневрируешь
> - как оптимальнее решать на этом языке микрозадачки, как решать части
> большого. Но можно и из Шелл скрипта вызвать Перл, если уместно.Вы бы еще на T-SQL посоветовали писать))
> а потом идите на профильные форумыАнекдот:
Амер-ский форум: задаёшь вопрос - получаешь ответ.
Израильский: задаёшь вопрос - тебя спрашивают в ответ.
Русский форум: задаёшь вопрос... - тебе долго объясняют какой ты дурак.:)
Ничего, научишься. Можно кстати выводить в стандартный поток ошибок вот так fprintf ( stderr, "%s\n", "Enter just one symbol" );
>[оверквотинг удален]
> return 1;
>
> }
>
> ++j;
>
> }
>
> return 0;
> }А зачем бряк перед return? Если я правильно помню бряк прервет цикл и до return дело не дойдёт, не лучше ли сразу выйти с кодом 0? 1 это если есть ошибки, какая тут ошибка?
>[оверквотинг удален]
> return 1;
>
> }
>
> ++j;
>
> }
>
> return 0;
> }Это в каком редакторе из коробки стиль кода K&R и кто учит си сразу с указателями?
> char * str=argv[2];
> char * patrn=argv[1];
> if (argc < 2) {Классика! Сначала прочитал, потом проверил.
(классика, потому что в ядре линукса видел подобное, с результатом в виде oops-ов раз в несколько дней в некоторых конфигурациях)
Так что диплом сишника можешь получить вне очереди, далеко пойдёшь.
>> char * str=argv[2];
>> char * patrn=argv[1];
>> if (argc < 2) {
> Классика! Сначала прочитал, потом проверил.
> (классика, потому что в ядре линукса видел подобное, с результатом в виде
> oops-ов раз в несколько дней в некоторых конфигурациях)
> Так что диплом сишника можешь получить вне очереди, далеко пойдёшь.В какой из книжек о безопасных языках программирования учат обработке ошибок и в какой именно главе?
>[оверквотинг удален]
> return 1;
>
> }
>
> ++j;
>
> }
>
> return 0;
> }Спасибо всем за ответы и критику.
Главное, наверное, понять свои способности, возможности и стремления.
> Спасибо всем за ответы и критику.
> Главное, наверное, понять свои способности, возможности и стремления.
>17-Сен-16, 15:38
>25-Дек-24 11:38Это какая-то нейросеть? Что вообще в треде происходит? За 8 лет си выучил или не?
>> Спасибо всем за ответы и критику.
>> Главное, наверное, понять свои способности, возможности и стремления.
>>17-Сен-16, 15:38
>>25-Дек-24 11:38
> Это какая-то нейросеть? Что вообще в треде происходит? За 8 лет си
> выучил или не?Не, не выучил. Кто-то выше не посмотрел на дату и подтянул тему.
> Ищет символ в строке. Большего ничего не делает:man 3 index - уверен другие это уже написали получше тебя)
Почему?
> У меня почти весь ушёл на одну мизерную программу, чтобы написать без
> ошибок и то сомневаюсь.Сомненья прочь - напиши тесты.