gpt4 book ai didi

c - 检查指针是否到达字符串末尾时出错

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:40 25 4
gpt4 key购买 nike

我正在研究一个字符串反转问题,我试图将两端的值相互交换。作为反向函数的一部分,我有一行检查指针是否到达字符串结尾字符(以 while(*end!= '\0') 的形式) .但是,这似乎不起作用,并且在 while 循环结束时,当我取消引用“结束”时,我变得一片空白。当我使用 (while(*end)) 时,一切正常,但我必须随后递减我的指针“end”以确保我正在访问我的字符串的最后一个元素。为什么我不能根据字符串文字“\0”检查指针?

#include<stdio.h>

void reverse(char* s);

void main(){
char str[]="abcdef";
printf("%s\n",str);
reverse(str);
printf("%s\n",str);
}

void reverse(char* p){
char* start = p;
char* end = p;
char tmp;
int length =0;

while(*end!='\0'){
end+=1;
length+=1;
}
printf("%c\n",*end); // problem line

int c;
for (c = 0; c < length/2; c++)
{
tmp = *start;
*start = *end;
*end = tmp;

start++;
end--;
}
//printf("%s\n",p);
}

最佳答案

//Problem line *end 的值是'\0' - 你应该打印 '\0' 的整数值验证哪个是 0 并且它有效 - 除此之外你需要取消注释 }来自 reverse功能。

'\0'是不可打印的字符:Reference: Non-printable and Printable ASCII Characters

关于c - 检查指针是否到达字符串末尾时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com