【发布时间】:2020-04-19 11:17:31
【问题描述】:
所以我想编写一个程序来反转从用户那里获取的字符串。
这是我的源代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argv, char *argc[]) {
if (argv != 2) {
printf("Please enter the number of elements in your string!\n");
return 1;
}
int n = atoi(argc[1]);
char *c = malloc((sizeof(char) * n) + 1);
char *o = malloc((sizeof(char) * n) + 1);
printf("Enter your string - ");
fgets(c, n, stdin);
for (int i = 0; i < n + 1; i++) {
*(o + i) = *(c + (n - 1) - i);
}
printf("%s\n", o);
free(c);
free(o);
}
但是打印出来的输出什么都不是!
谁能指出我的代码有什么问题?
【问题讨论】:
-
可能(未初始化的)
c[n - 1]为零,使o成为空字符串"\0......"? -
fgets(c, n, stdin);->fgets(c, n+1, stdin); -
@kaylum ...或者不要将
1添加到malloc -
@pmg 可能。虽然我认为 OP 打算将
n用作字符串中的字符数。 -
为什么要交换
argv和argc??? 强烈建议 OP...继续使用int main(int argc, char **argv)...不要交换主要参数标准标识符。