我正在尝试反转C中的字符串。反向函数只是将给定位置(在for循环中)的字符分配给临时对象。 我在程序中看不到任何逻辑错误,并且使用以下命令在gcc 4.7.2下成功编译程序:
gcc -Wall -std=c99 reverse.c
要重新创建问题:
1.)运行程序并在shell中输入一个字符串
2.)完成输入后,按enter /和/或您的EOF信号。
问题是既没有打印原始字符串,也没有反转字符串。 这也是K&R第二版的练习,如果你完成了这个练习,我将不胜感激我的另一个解决方案。
我认为该错误是由缺少空字符引起的,着名的printf需要一个以空字符结尾的字符串来打印输入到cin。 getline函数将一个空字符分配给数组的末尾,当然空字符将是字符串中结束printf的第一个字符(因此不会打印字符/文字)。
#include #define MAXLINE 1000 int geline(char s[], int lim); void reverse(char line[], int length); int main() { char s[MAXLINE]; char t[MAXLINE]; int k, len; while ((len = getline(s, MAXLINE)) > 0) { if (len > 1) reverse(s, len); } printf("%s", s); return 0; } void reverse (char input[], int length) { char temp[MAXLINE]; int j = length; for (int i = 0; i < length; ++i, --j) { temp[i] = input[i]; input[i] = input[j]; input[j] = temp; } } int getline(char s[], int lim) { int c, i; for (i=0; (c=getchar()) != EOF && c!='n'; ++i) s[i] = c; if (c== 'n') { s[i] = c; ++i; } s[i] = '