无法跳出 "While"循环

标签 c arrays dynamic char segmentation-fault

我正在将二维 char 数组转换为二维 int 数组,并且我需要突破 while如果 \0\n 出现在字符串中,则循环。这段代码给出了段错误。 Array 的定义是,索引小于 1000,并且已经存储了二维 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;
}

最佳答案

您有点混淆了 (a) char 文字和字符串文字以及 (b) while 循环逻辑。

更改此行:

while(tempCharArray[i]!="\0" || tempCharArray[i]!="\n")

至:

while(tempCharArray[i]!='\0' && tempCharArray[i]!='\n')

请注意,您的编译器应该就错误 (a) 向您发出警告 - 我希望您确实启用了警告?

<小时/>

编辑:从后续评论看来,tempCharArray实际上可能是一个字符串数组?在这种情况下,您需要这样做来解决问题 (a):

while(strcmp(tempCharArray[i],"")!=0 && strcmp(tempCharArray[i],"\n")!=0)

请注意,您不能将字符串==!=进行比较 - 您需要使用strcmp .

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

关于无法跳出 "While"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498617/

相关文章:

使用链表计算 C 中未知但巨大的文本文件中的单词数

c++ - 错误,动态分配对象到数组

c - 将函数作为 void * 传递,其参数也作为 void *

c - linux下C多线程程序如何有效锁定普通变量

c - 在管道上使用 select 返回 10038

c++ - 数组中的第一项正在……被替换?

c++ - 为什么 OutOfRange 数组索引仍然打印一个值?

arrays - JQ 将数组展平为对象

java - 更改for循环的顺序?

android - 相对于手机屏幕动态更改 Listview 尺寸