无法突破"While"循环

-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)

Pau*_*l R 5

你在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.

逻辑错误及其修复当然仍然适用.