无法突破“While”循环

时间:2013-05-11 15:17:43

标签: c arrays dynamic char segmentation-fault

我正在将2-d char数组转换为2-d int数组,如果while或{我需要突破\0循环{1}}出现在字符串中。此代码给出了分段错误。 \n的定义为且索引小于1000且已存储2-d Array数组char。我的代码有什么问题?

tempCharArray

3 个答案:

答案 0 :(得分:5)

你有点混淆了(a)字符文字和字符串文字,(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

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

答案 1 :(得分:1)

如果tempCharArraychar数组,则您尝试将单个字符与完整字符串进行比较。这不会做你想要的。而是将其与字符字面值进行比较:

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

请注意使用单个引号而不是double。

答案 2 :(得分:1)

  • 您需要使用&&代替||,因为只要条件为真,循环就会继续(这是 - 在您的情况下 - 只要{ {1}}是tempCharArray[i] '\0'
  • 您需要使用单引号,因为您要比较字符文字

这导致

'\n'