有很多关于C ++的主题,但是我在这里遇到了常规C,无法在任何地方找到答案。
#include <stdio.h>
#include <conio.h>
#include <string.h>
main() {
char word[26], letter, reverse[26], length;
printf("Enter word: ");
scanf("%s", &word);
length=strlen(word);
for (int i=0; i<=length; i++) {
letter = word[length-i];
strcpy(reverse, letter);
printf("%c\n", reverse);
}
getch();
}
标题声明我收到了错误。
13 25~ [错误]来自&#39; char&#39;的无效转换到#char; char *&#39; [-fpermissive]
51 18 C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\string.h [Note]
初始化&#39; char * strcpy(char *,const char *)&#39;
的参数2
代码应该做的是反转书面文字并逐行输入每个最后一个字母。 等等 - 输入&#34;食物&#34;程序应输出:
d
OD
OOD
食品
我知道我在这封信的某处搞砸了,但我不知道如何修复它。 我也试图避免使用std ::,个人偏好。
答案 0 :(得分:2)
试试这个:
int main( void ) {
char word[26], reverse[26];
int length, i;
printf("Enter word: ");
scanf("%s", &word);
length=strlen(word);
for (i=0; i<length; i++) {
reverse[i] = word[length - i - 1];
}
/* Put \0 to terminate the string */
reverse[length]='\0';
printf("%s\n", reverse);
}
请注意,在for循环中,您只能使用<
而不是<=
,因为您将超出数组的范围(负索引)并且您必须放置{{1终止符来终止你的反向字符串。您不需要\0
,而btw letter
不能使用单个字符,因为单个字符不是字符串(因为缺少字符串终止符(strcpy
))。
编辑:
\0
答案 1 :(得分:1)
问题:
修正程序:
#include <stdio.h>
#include <string.h>
int main (void)
{
char word[26];
char reverse[26];
size_t length;
size_t i;
printf("Enter word: ");
scanf("%s", word);
length=strlen(word);
for (i=0; i<length; i++)
{
reverse[i] = word[length-i-1];
}
reverse[i] = '\0';
printf("Reverse: %s\n", reverse);
return 0;
}
输出:
Enter word: stackoverflow
Reverse: wolfrevokcats
答案 2 :(得分:-1)
代码中有很多错误。您要问的问题是由于您传递了char
(即变量letter
)而不是地址(即&letter
)
这&#34;修复&#34;会导致编译器错误消失,但是会导致出现另一个错误。这是因为我们现在正在将指针传递给char
而不是指向终止字符串的指针。
for (i=0 ; i<26 ; i++)
reverse[i] = word[25-i];
答案 3 :(得分:-4)
这里我必须传入strcat(char * s1,const char * s2); 这里反向是cha *,而&amp;字母是const char *。 看看这个。
这是您想要输出的代码。
int main()
{
char word[26], letter, length;
int n, c, d;
char reverse[26];
char temp[26];
printf("Enter word: ");
scanf("%s", word);
length=strlen(word);
for (int i=0; i<=length; i++)
{
letter = word[length-i];
strcat(reverse, &letter);
n = strlen(reverse);
for (c = n - 1, d = 0; c >= 0; c--, d++)
temp[d] = reverse[c];
temp[d] = '\0';
printf("%s\n", temp);
}
return 0;
}
输出: -