我正在将二维 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/