#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const char *s, *start, *end, *cur;
int n, i;
if (argc == 3) {
s = argv[1];
n = atoi(argv[2]);
} else {
s = "12345";
n = 50;
}
start = end = s;
if (*end)
while (*(end + 1))
end++;
cur = start;
for (i = 0; i < n; i++) {
putchar(*cur);
cur = (cur < end) ? cur + 1 : start;
}
putchar('\n');
return 0;
}
[guest@localhost c]$ .ansi t.c -o t
[guest@localhost c]$ ./t
12345123451234512345123451234512345123451234512345
[guest@localhost c]$ ./t abc 80
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcab
[guest@localhost c]$ ./t a 10
aaaaaaaaaa
[guest@localhost c]$ ./t ab 10
ababababab
[guest@localhost c]$ ./t abc 10
abcabcabca
[guest@localhost c]$
Если сейчас все так просто, то нужно разбираться в make/cmake?
# Build section
CC = gcc
CFLAGS = -ansi -pedantic -Wall
TARGET = ntow
OBJS = main.o noun.o triple.o number.o cmdline.o errors.o input.o
BASEDIR = .
TESTDIR = $(BASEDIR)/tests
# Install section
prefix = /usr/local
PREFIX = $(prefix)
BINDIR = $(PREFIX)/bin
# Rules
all: $(TARGET)
$(TARGET): $(OBJS)
@$(CC) $(CFLAGS) $^ -o $@ && echo "$(TARGET) has built"
main.o: cmdline.h number.h input.h errors.h
triple.o: triple.h
number.o: number.h
cmdline.o: cmdline.h errors.h
# Commands
help:
@echo "usage: make [ test | install | uninstall | clean | cleanall ]" 1>&2
test: $(TARGET)
@$(MAKE) -C $(TESTDIR) run
clean:
@rm -f $(OBJS) $(TARGET) && echo "$(TARGET) cleaned"
cleanall: clean
@$(MAKE) -C $(TESTDIR) clean
install:
install -d $(BINDIR)
install $(TARGET) $(BINDIR)/$(TARGET)
uninstall:
rm -f $(BINDIR)/$(TARGET)
.PHONY: help all test clean cleanall install uninstall
void stack_start();
int stack_push(int value);
int stack_pop();
int stack_isempty();
int stack_topr();
int stack_topw(int value);
void stack_del();
void stack_end();
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main(void)
{
FILE *fp_in, *fp_out;
wchar_t wch;
setlocale(LC_ALL, "ru_RU.UTF-8");
fp_in = fopen("file.txt", "r");
wch = getwc(fp_in);
fclose(fp_in);
putwc(wch, stdout);
wch++;
putwc(wch, stdout);
putwc(L'\n', stdout);
fp_out = fopen("output.txt", "w");
putwc(wch, fp_out);
fclose(fp_out);
return 0;
}
[guest@localhost wch]$ .ansi wch.c -o wch
[guest@localhost wch]$ ./wch
жз
[guest@localhost wch]$ cat file.txt
ж[guest@localhost wch]$ cat output.txt
з[guest@localhost wch]$
Изучаю по самоучителю курс ANSI C
Если есть что-то подобное, но для ANSI C, с геймификацией и интересностью, то вообще идеально.
1. Как правильно читать спецификацию? Люди, которые знакомы с ней, непосредственно брали в руки документ и читали его от корки до корки?
Поэтому начинаешь читать по факту что уже знаешь. Как итог трата времени, скука и бросание дела на пол пути.
#include <stdio.h>
int main(void)
{
int c;
printf("%c %d %x\n", 'a', 'a', 'a');
printf("%c %d %x\n", 'b', 'b', 'b');
printf("%c %d %x\n", '$', '$', '$');
c = 'A';
printf("%c %d %x\n", c, c, c);
c = '+';
printf("%c %d %x\n", c, c, c);
c = '/';
printf("%c %d %x\n", c, c, c);
return 0;
}
[guest@localhost c]$ .ansi t.c -o t
[guest@localhost c]$ ./t
a 97 61
b 98 62
$ 36 24
A 65 41
+ 43 2b
/ 47 2f
[guest@localhost c]$
Пошел я значит смотреть как там устроен клиент и обнаружил что заюзали кучу библиотек и зачем я так и не понял.
void main(void) {
int main(void) {
Неужели СТАНДАРТНАЯ БИБЛИОТЕКА (которая почти часть языка) это какой-то секрет?
Помогите пожалуйста разобраться с тем, как организовать вывод обнаруженных строк именно после окончания ввода - допустим после двойного \n.
cat file.txt | ./prog
type file.txt | prog.exe
3.3.7 Bitwise shift operators
...
The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1
has an unsigned type or if E1 has a signed type and a nonnegative
value, the value of the result is the integral part of the quotient of
E1 divided by the quantity, 2 raised to the power E2 . If E1 has a
signed type and a negative value, the resulting value is
implementation-defined.