【发布时间】:2016-03-16 16:12:11
【问题描述】:
当我尝试打印文件的每个字符时,出现分段错误。我不明白为什么。
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]);
}
}
}
【问题讨论】:
-
我发现了错误。对于 printf("%c\n", file[i]) 而不是 printf("%s\n", file[i])。我相信是因为我逐个字符地打印,而不仅仅是一个字符串。
-
启用编译器警告并观察它们。
-
完全正确:%s 用于打印字符串,%c 用于打印字符。您应该首先学习使用调试器,这样至少您会找到崩溃的行,而不仅仅是“我得到分段错误”。其次,当你遇到问题时,你需要通过说:“我在某个地方犯了错误。我犯了哪个错误?”永远不要想:“我的代码是正确的,为什么不正确?”这行得通”。总想:“我的代码错了,哪里错了?”
标签: c string parsing memory fault