我正在将2-d char
数组转换为2-d int
数组,如果while
或{我需要突破\0
循环{1}}出现在字符串中。此代码给出了分段错误。
\n
的定义为且索引小于1000且已存储2-d Array
数组char
。我的代码有什么问题?
tempCharArray
答案 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)
如果tempCharArray
是char
数组,则您尝试将单个字符与完整字符串进行比较。这不会做你想要的。而是将其与字符字面值进行比较:
while(tempCharArray[i]!='\0' || tempCharArray[i]!='\n')
请注意使用单个引号而不是double。
答案 2 :(得分:1)
&&
代替||
,因为只要条件为真,循环就会继续(这是 - 在您的情况下 - 只要{ {1}}是tempCharArray[i]
和 '\0'
这导致
'\n'