C语言编程,分段故障转储
我正在尝试制作一个程序,它接收“Hello”的输入,并通过颠倒字符顺序输出“olleH”。然而,我不断得到一个分割错误,我不明白为什么C语言编程,分段故障转储,c,arrays,string,reverse,C,Arrays,String,Reverse,我正在尝试制作一个程序,它接收“Hello”的输入,并通过颠倒字符顺序输出“olleH”。然而,我不断得到一个分割错误,我不明白为什么 #include <stdio.h> #include<string.h> int main() { int i; int size; char s[100],a[100]; printf("Enter the word you want to get reversed: "); scan
#include <stdio.h>
#include<string.h>
int main()
{
int i;
int size;
char s[100],a[100];
printf("Enter the word you want to get reversed: ");
scanf("%s",s);
while(s[i]!='\0')
{
a[i]=s[i];
i++;
}
size=sizeof(s);
while(i<sizeof(s))
{
s[i]=a[size];
}
printf("The reversed string is : %s",s);
}
#包括
#包括
int main()
{
int i;
整数大小;
chars[100],a[100];
printf(“输入要反转的单词:”);
scanf(“%s”,s);
而(s[i]!='\0')
{
a[i]=s[i];
i++;
}
尺寸=尺寸f(s);
而(i问题在于这一部分:
size=sizeof(s);
while(i<sizeof(s))
{
s[i]=a[size];
}
size=sizeof(s);
而(i另一种简单的反转字符串的方法
试试这个:
while(s[++i]!='\0'); // find the size of string
while(i>=0)
a[j++] = s[--i]; // reverse the string
a[j]='\0';
printf("The reversed string is : %s",a);
这个while循环
while(i<sizeof(s))
{
s[i]=a[size];
}
始终相同,并再次引用数组外的内存
考虑到程序中未使用
中声明的函数。因此可以删除标头
程序可以按以下方式运行
#include <stdio.h>
#define N 100
int main()
{
char s[N], d[N];
printf( "Enter the word you want to get reversed: " );
fgets( s, N, stdin );
size_t n = 0;
while ( s[n] != '\0' && s[n] != '\n' ) n++;
for ( size_t i = 0; i != n; i++ ) d[i] = s[n-i-1];
d[n] = '\0';
printf( "The reversed string is : %s\n", d );
return 0;
}
#包括
#定义N 100
int main()
{
字符s[N],d[N];
printf(“输入要反转的单词:”);
fgets(南、北、标准差);
尺寸n=0;
而(s[n]!='\0'和&s[n]!='\n')n++;
对于(大小i=0;i!=n;i++)d[i]=s[n-i-1];
d[n]='\0';
printf(“反向字符串为:%s\n”,d);
返回0;
}
您可以在不使用辅助数组的情况下反转字符串
#include <stdio.h>
#define N 100
int main()
{
char s[N];
printf( "Enter the word you want to get reversed: " );
fgets( s, N, stdin );
size_t n = 0;
while ( s[n] != '\0' && s[n] != '\n' ) n++;
s[n] = '\0';
for ( size_t i = 0; i < n / 2; i++ )
{
char c = s[i];
s[i] = s[n-i-1];
s[n-i-1] = c;
}
printf( "The reversed string is : %s\n", s );
return 0;
}
#包括
#定义N 100
int main()
{
chars[N];
printf(“输入要反转的单词:”);
fgets(南、北、标准差);
尺寸n=0;
而(s[n]!='\0'和&s[n]!='\n')n++;
s[n]='\0';
对于(大小i=0;i
提示:size=sizeof(s);
是错误的…while(我还要注意,i
是未初始化使用的,这是UP的另一个漏洞?可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离一个可以在几段中回答的问题。
#include <stdio.h>
#define N 100
int main()
{
char s[N];
printf( "Enter the word you want to get reversed: " );
fgets( s, N, stdin );
size_t n = 0;
while ( s[n] != '\0' && s[n] != '\n' ) n++;
s[n] = '\0';
for ( size_t i = 0; i < n / 2; i++ )
{
char c = s[i];
s[i] = s[n-i-1];
s[n-i-1] = c;
}
printf( "The reversed string is : %s\n", s );
return 0;
}