我不明白我是如何得到分段错误的

时间:2016-03-16 16:12:11

标签: c string parsing memory fault

当我尝试打印文件的每个字符时,我会出现分段错误。我不明白为什么。

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 个答案:

答案 0 :(得分:2)

如果要打印字符串的每个字符,则应使用%c而不是%s

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

此外,

使用printf("%s", ..)打印字符串时,需要传递字符串所在的地址,而不是地址的内容。

因此,对于char* str = "hello",print语句将是

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

而不是

printf("%s\n", str[0]);
相关问题