Я не понимаю, как я получаю ошибку сегментации

Когда я пытаюсь напечатать каждый символ файла, я получаю ошибку сегментации. Я не понимаю почему.

void parseStringAndDelete(char *file)
{
// I a passing "drwxr-xr-x 1 ftp ftp              0 Mar 07 12:34 A_Folder"
// as an argument for the function
 int i = 0;
 int k = 0;
 int len = strlen(file);
 int startIndex = 0;

 //printf("%s\n", file);
 //printf("%d\n", len);
 if(file[0] == 'd')
  {
      for(i = 0; i<len; i++)
      {
        printf("%s\n", file[i]);
      }
  }

}

1 ответ

Если вы хотите напечатать каждый символ строки, то вы должны использовать %c и не %s,

printf("%c\n", file[i]);

Дополнительно,

При печати строки с помощью printf("%s", ..)вам нужно передать адрес, где находится строка, а не содержимое адреса.

Итак, для char* str = "hello"распечатать заявление будет

printf("%s\n", str);

и не

printf("%s\n", str[0]);
Другие вопросы по тегам