Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,因此它是on-topic,用于堆栈溢出。
                        
                        3年前关闭。
                                                                                            
                
        
当我尝试打印文件的每个字符时,出现分段错误。我不明白为什么。

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]);
      }
  }

}

最佳答案

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

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




另外,

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

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

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


并不是

printf("%s\n", str[0]);

关于c - 我不明白我是怎么得到段错误的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36041137/

10-11 22:03