Итерация по строке фиксированной длины проста, но когда используется строка переменной длины, итерация завершается с ошибкой после 0-го индекса.
Например, в приведенном ниже коде (печать символов строка p
одна за другой), использование p[]
не работает, в то время как p[some integer]
работает (но мы не всегда знаем, что это за some integer
).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
setbuf(stdout, NULL);
// variable p to store string
// if you change the line to let's say char p[20]=""; it will work
char p[]="";
printf("Enter a string: ");
scanf("%s", p);
printf("You entered: %s\n", p);
printf("String length: %d\n", strlen(p));
printf("Printing each character of the string:\n");
int i=0;
while (p[i] != '\0')
{
printf("p[%d] is %c\n", i, p[i]);
i++;
}
return 0;
}