错误行是:strcpy( tmp, row1+ row2 + row3 + row4 );
我不知道如何将所有行放在一起然后计算单词数?
我尝试创建函数,然后在 IF 之前调用它,但没有成功。
我还考虑过改变 int 中的 char 然后在 prinft 中显示它,还尝试创建一个数组然后将所有行放入其中..
我该怎么做?
int main() {
char row1[256];
char row2[256];
char row3[256];
char row4[256];
printf("4 rows of lyric:\n");
fgets(row1,100,stdin);
fgets(row2,100,stdin);
fgets(row3,100,stdin);
fgets(row4,100,stdin);
char *tmp[1000];
strcpy( tmp, row1+ row2 + row3 + row4 );
int count=0;
char *cur= tmp;
for (;;)
{
while (*cur == ' ')
{
*cur++;
}
if (*cur == 0)
{
break;
}
count++;
while (*cur != 0 && *cur != ' ')
{
*cur++;
}
}
char a1=row1[strlen(row1)-1];
char a2=row1[strlen(row1)-2];
char a3=row1[strlen(row1)-3];
char b1=row2[strlen(row2)-1];
char b2=row2[strlen(row2)-2];
char b3=row2[strlen(row2)-3];
char c1=row3[strlen(row3)-1];
char c2=row3[strlen(row3)-2];
char c3=row3[strlen(row3)-3];
char d1=row4[strlen(row4)-1];
char d2=row4[strlen(row4)-2];
char d3=row4[strlen(row4)-3];
if( a1==d1 &&
a2==d2 &&
a3==d3 &&
b1==c1 &&
b2==c2 &&
b3==c3 ) {
printf("1 = 4 and 2 = 3, number of words %c." cur);
}
else if ( a1==c1 &&
a2==c2 &&
a3==c3 &&
b1==d1 &&
b2==d2 &&
b3==d3 ) {
printf("1 = 3 and 2 = 4, number of words %c.", cur);
}
else if ( a1==b1 &&
a2==b2 &&
a3==b3 &&
c1==d1 &&
c2==d2 &&
c3==d3 ) {
printf("1 = 2 and 3 = 4, number of words %c.",cur);
}
else {
printf("Nijedna rima nije pronadjena u strofi!");
}
return 0;
}
最佳答案
char * stpcpy(char * restrict dst, const char * restrict src);
您传递的参数不是char*
类型。
此外,您不能在 c 中使用 +
连接字符串。使用 strcat
或 strncat
。
作为对用户评论的回复:-
有3件事你应该记住
- 第一个参数应该是可修改的。
- 第一个参数有足够的空间来容纳组合字符串。
- 第一个参数和第二个参数之间没有重叠。
牢记这 3 条规则,就可以使用它们。
关于c - 将 4 行字符串放在一起并计算单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270418/