#include <stdio.h>
#include <string.h>
int main(void)
{
//int num_of_signs,x;
//scanf("%d", &num_of_signs);
//for (x=0; x<num_of_signs; x++){
int num_of_chars, i;
char sign[30], two_sign[60];
fgets(sign, sizeof(sign), stdin);
scanf("%d", &num_of_chars);
sign[strlen(sign) - 1] = '\0'; // discard '\n'
strcpy(two_sign, sign);
strcat(two_sign, sign);
for (i = 0; sign[num_of_chars + i]; i++){
printf("[%.*s]\n", num_of_chars, two_sign + i);
}
// }
return 0;
}
Исходный код без цикла делает это:Когда я добавляю цикл for в начало моего кода, моя программа вылетает из строя. Зачем?
Input:
Hello World!
5
Output:
[Hello]
[ello ]
[llo W]
[lo Wo]
[o Wor]
[ Worl]
[World]
[orld!]
[rld! ]
[ld! H]
[d! He]
[! Hel]
Когда я добавляю в цикле, чтобы сделать это с несколькими входами, моя программа падает. Чтобы быть конкретным, он падает после ввода первой строки, которую я хочу в качестве своего знака. Я не могу понять, почему ....
То, что я хочу, чтобы это сделать:
Input:
3
Hello World!
5
Farewell
10
Sad
2
Output:
Sign #1:
[Hello]
[ello ]
[llo W]
[lo Wo]
[o Wor]
[ Worl]
[World]
[orld!]
[rld! ]
[ld! H]
[d! He]
[! Hel]
Sign #2:
[Farewell ]
Sign #3:
[Sa]
[ad]
[d ]
[ S]
Не следует смешивать '' scanf' и fgets'. Либо используйте 'scanf' для всех входных данных (замените' fgets' на 'scanf ("% 29 [^ \ n], знак) '), либо прочитайте строки с' fgets' и извлеките числа с помощью 'sscanf', например' fgets (buffer, sizeof buffer, stdin); sscanf (buffer, "% d", & num_of_chars); ' – user3386109