在C中使用指针尝试在不使用string.h库函数的情况下反转字符串
它返回一半并显示--processreturned-1073741819(0xC0000005) 此代码也不显示错误或警告。 只是想知道为什么会这样在C中使用指针尝试在不使用string.h库函数的情况下反转字符串,c,string,pointers,reverse,C,String,Pointers,Reverse,它返回一半并显示--processreturned-1073741819(0xC0000005) 此代码也不显示错误或警告。 只是想知道为什么会这样 #include<stdio.h> void reverse(char*); int main() { char str[200]; printf("Enter a string : "); scanf("%s",&str); reverse(str); printf("Re
#include<stdio.h>
void reverse(char*);
int main()
{
char str[200];
printf("Enter a string : ");
scanf("%s",&str);
reverse(str);
printf("Reversed string : %s",str);
}
void reverse(char *p)
{
char temp,*q;
*p=*q;
while(*p!='\0')
{
q++;
}
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
#包括
无效反向(字符*);
int main()
{
char-str[200];
printf(“输入字符串:”);
scanf(“%s”和&str);
反向(str);
printf(“反向字符串:%s”,str);
}
无效反向(字符*p)
{
焦温,*q;
*p=*q;
而(*p!='\0')
{
q++;
}
而(p你从来没有初始化过q。它指向完全随机的东西
修复是chartemp,*q=p;
按照回答进行了以下更改,并添加了一个更改,使代码正常工作
#include<stdio.h>
void reverse(char*);
void main()
{
char str[20];
printf("Enter a string : ");
scanf("%s",&str);
reverse(str);
printf("Reversed string : %s",str);
}
void reverse(char *p)
{
char temp,*q=p;
while(*q!='\0')
{
q++;
}
q--;
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
#包括
无效反向(字符*);
void main()
{
char-str[20];
printf(“输入字符串:”);
scanf(“%s”和&str);
反向(str);
printf(“反向字符串:%s”,str);
}
无效反向(字符*p)
{
字符温度,*q=p;
而(*q!='\0')
{
q++;
}
q--;
虽然(pchar-temp,*q;*p=*q;
-此处您试图取消引用q
,但尚未为其分配任何有效值。这会导致未定义的行为。代码中可能存在其他问题。没有警告?甚至没有警告C4700:使用了未初始化的局部变量“q”?令人惊讶的是,它不会给出任何警告或错误。还有c更改while条件:while(*q!=0)…必须测试q指向的不是p。