Tag: 反向

这个reverseString算法如何工作?

我已经看到这个算法在线反转一个字符串,我对它有一些疑问,我将在代码的末尾指定: void reverseString(char *original_string) { char *end = original_string; char tmp; if(original_string) { while(*end) { ++end; } –end; while (original_string < end) { tmp = *original_string; *original_string++ = *end; *end– = tmp; } } //This line doesn't have the complete reversed string. Why? printf("%s\n", original_string); } 1)在while循环中…为什么我们比较两个指针? 我们怎么知道价值会变大还是变小? 那些只是指针,对吧? 2)为什么我们不退货? 反转弦在哪里? 如果我们认为反向字符串在original_string中,我们是否应该使用指向指针的指针,以便效果在范围外? 3)如果我做以下事情: char test[] […]

反转字符串并计算在C中反转的字符数

我的教授已经开始使用代码,它看起来像…… #include “stdafx.h” int main(int argc, char* argv[]) { int numchar; char mystring[] = “This is the string to be printed in reverse order”; numchar = reverseString(mystring); puts(“Reversed String is “); puts(mystring); } int reverseString(char *mystring) { } 现在我应该完成它,那就是我被困住的地方。 我已经查找了无数的逆转字符串的示例程序,但所有这些程序都是以不同的方式完成的,而我却迷失了如何将其“转换”为我教授为我们提供的代码的适当上下文。 我也对’int argc’应该是什么感到困惑。 但是,我想在计算并返回反转的字符数时,我可以简单地输入这样的东西for(int length=0; str[length]!=’\0′;length++); 但除此之外,我很难过。

在c 中反转一个字符串

我试图扭转一个字符串到位。 void reverseStr(char *str) { int i; int length; int last_pos; length = strlen(str); last_pos = length-1; for(i = 0; i < length / 2; i++) { char tmp = str[i]; str[i] = str[last_pos – i]; str[last_pos – i] = tmp; } } Program received signal SIGSEGV, Segmentation fault. 0x0000000000400893 in reverseStr (str=0x400974 "Haus") at […]

使用指针反转C中的字符串?

语言:C 我正在尝试编写一个C函数,它使用头文件char * strrev2(const char * string)作为面试准备的一部分,最接近(工作)的解决方案如下,但是我想要一个不包含malloc的实现…这可能吗? 因为它返回一个字符意味着如果我使用malloc,则必须在另一个函数中使用free。 char *strrev2(const char *string){ int l=strlen(string); char *r=malloc(l+1); for(int j=0;j<l;j++){ r[j] = string[lj-1]; } r[l] = '\0'; return r; } [编辑]我已经使用缓冲区编写实现而没有char。 谢谢你!

在C中反转数组?

嗨,我试图实现一个反向数组代码但它似乎没有工作,我真的不知道为什么。 For循环似乎不起作用。 我不知道为什么,因为逻辑对我来说似乎很合适。 #include #include void reverse(char, int); int main() { char a[100]; gets(a); reverse(a, strlen(a)-1); printf(“%s\n”,a); getchar(); getchar(); getchar(); return 0; } void reverse(char ar[], int n) { char c; int i = 0; printf(“n = %d” , n); for ( i = 0; i >= n ; i++){ c = ar[i]; ar[i] = […]

64位值的反转字节

我正在尝试为分配反转64位地址指针的字节并具有以下代码: char swapPtr(char x){ x = (x & 0x00000000FFFFFFFF) <> 32; x = (x & 0x0000FFFF0000FFFF) <> 16; x = (x & 0x00FF00FF00FF00FF) <> 8; return x; } 但是,它只是让一切都搞砸了。 但是,类似的function适用于64位长。 是否需要针对指针做一些不同的事情? 我正在进行函数调用的方式是一个问题吗? 对于指针: *(char*)loc = swapPtr(*(char*)loc); 很久了: *loc = swapLong(*loc);

在C中递归地反转一个字符串?

我必须在递归函数中反转一个字符串,但我不能使用循环或strlen来查找字符串结尾的位置。 然后我必须将反转的字符串传递回main并将其复制到新文件。 这是我到目前为止所拥有的: int reverse(char *str, char *strnew, int p) { char temp=str[p]; if(temp==’\0′ || temp==’\n’) { strnew=str; return p; } else { reverse(str++, strnew, ++p); p–; strnew[p]=str[p]; printf(“strnew: %c\n”, strnew[p]); return 0; } } int main(int argc, char *argv[]) { FILE *fp; char buffer[100]; char newstr[100]; int pointer=0; fp=fopen(“lab8.txt”, “r”); if(fp==NULL) { printf(“Error opening […]

C程序反转链表

我试图在c中编写一个程序,用链表添加大数字。 我用反向添加数字,但我不能让它再次反转。 应该多次使用(哇,循环询问数字直到退出) #include #include #include #include “function.c” int main() { char n1[500]; int lenSum, len; printf(“Welcome! \nThis program performs addition of big whole numbers that can contain upto a maximum of 500 digits.”); printf(“\nEnter first number: “); scanf(“%s”, n1); len = strlen(n1); node *root = create(n1[0]); node *head = root; root, head = createList(n1,root,head,len); […]

函数在C中反转字符串

我写了这个函数来反转C中的字符串,但是当在字符串中切换字符时程序崩溃了。 我不知道是什么导致它,所以任何帮助将不胜感激。 void reverse(char s[]) { char c; int i; int j; for (i = 0, j = (strlen(s) – 1); i < j; i++, j–) { c = s[i]; s[i] = s[j]; //An error occurs here s[j] = c; } printf("%s", s); } main() { reverse("Example"); }

使用递归函数反转字符串

我目前正在学习C,我无法通过这项练习。 我必须创建一个递归函数来将string1反转为string2 。 这是我的代码。 我很乐意感谢你的帮助。 #include #define MAX 100 void reverse(char s1[],char s2[],int n,int j); int main() { char string1[MAX]=”How Are You Mate”; char string2[MAX]=””; int n=0; int i=0; int j=0; for(i=0;string1[i]!=’\0′;i++) n++; reverse(string1,string2,n,j); printf(“String-a normal:\n%s\n”,string1); printf(“String-a reverse:\n%s\n”,string2); return 0; } void reverse(char s1[],char s2[],int n,int j) { if(n>0) { s2[j]=s1[n]; reverse(s1,s2,n-1,j+1); } else s2[j]=’\0′; […]