我正在编写一个程序来反转C中输入的字符串,我的代码是:
#include<stdio.h>
#include<string.h>
void main()
{
int sz;
printf("Enter the size of the string : ");
scanf("%d",&sz);
char str[sz];
gets(str);
printf("Enter the string : \n");
gets(str);
char str1[sz];
int i =0;
--sz;
for(i=0;i<=sz;i++)
{
str1[sz-i]=str[i];
}
printf("%s",str1);
}
这个程序正在为字符串大小8,9和10提供一个奇怪的输出 对于大小为8,正在打印反向字符串,后跟空格和2个垃圾字符,对于大小9,正在打印反向字符串,后跟2个垃圾字符;对于大小为10,反向字符串由垃圾字符和其他字符串打印程序运行正常的大小。为什么会这样?
答案 0 :(得分:0)
注意:强>
第一个选项:
读取一个静态大小的字符串:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
// Length of String
unsigned expected;
printf("Enter the length of the string: ");
scanf("%u", &expected);
char *temp; // Warning: Uninitialized
// Get string
printf("Enter the string: ");
scanf("%s", temp);
unsigned actual = strlen(temp);
unsigned length = actual > expected ? expected : actual;
char *string = (char *) malloc(length * sizeof(char));
char *reverse = (char *) malloc(length * sizeof(char));
// Trim string to proper size
for (int i = 0; i < length; i++) {
string[i] = temp[i];
}
// Reverse string
for (int i = 0, j = length - 1; i <= j; i++) {
reverse[i] = string[j - i];
}
// Print Strings
printf("%s", string);
printf("\n%s", reverse);
第二个选项:
读取一个可变大小的字符串:
Cannot GET /index.php