-5 c arrays dynamic char segmentation-fault
我正在将2-d char数组转换为2-d int数组,while如果\0或者\n进入字符串,我需要突破循环.此代码给出了分段错误.Arrayis的定义和索引小于1000并且已经存储了2-d char数组tempCharArray.我的代码有什么问题?
//Array[tempCount][1000];
for(int i=0;i<tempCount;i++)
{
strtok(tempCharArray[i]," ");
while(tempCharArray[i]!="\0" || tempCharArray[i]!="\n")
{
Array[i][arrayindex]=atoi(strtok(NULL," ");
arrayindex++;
}
arrayindex=0;
}
Run Code Online (Sandbox Code Playgroud)
你在char文字和字符串文字之间(和)与你的while循环逻辑有点混淆.
改变这一行:
while(tempCharArray[i]!="\0" || tempCharArray[i]!="\n")
Run Code Online (Sandbox Code Playgroud)
至:
while(tempCharArray[i]!='\0' && tempCharArray[i]!='\n')
Run Code Online (Sandbox Code Playgroud)
请注意,您的编译器应该警告您有关错误(a) - 您确实启用了警告,我希望?
编辑:从后续评论看来,tempCharArray实际上可能是一个字符串数组?在这种情况下,您需要这样做来解决问题(a):
while(strcmp(tempCharArray[i],"")!=0 && strcmp(tempCharArray[i],"\n")!=0)
Run Code Online (Sandbox Code Playgroud)
请注意,您无法将字符串与- ==或者!=您需要使用 - 进行比较strcmp.
逻辑错误及其修复当然仍然适用.