合并两个单词的程序:
#include<stdio.h>
int main()
{
char s1[10],s2[10],s3[10];
int i,j,n=1;
for(i=0;i<n;i++)
scanf("%s",&s1[i]);
for(i=0;i<n;i++)
scanf("%s",&s2[i]);
for(j=0;s2[i];j++)
{
s3[i] = s1[i]+s2[j];
}
printf("%s",s3);
return 0;
}
我在这个程序中遇到运行时错误。任何人都可以帮我纠正它或指出错误是什么吗?
答案 0 :(得分:1)
for(i=0;i<n;i++)
scanf("%s",&s1[i]);
for(i=0;i<n;i++)
scanf("%s",&s2[i]);
这不是你读字符串的方式。试试这个:
scanf("%s", s1);
scanf("%s", s2);
这并不完美,但应该适合初学者。
答案 1 :(得分:0)
scanf("%s",&s1[i]);
没有按照您的想法行事。在我看来,您%s
与%c
混淆。这导致缓冲区溢出。请阅读scanf()
格式字符串的文档。
然后,不要使用scanf()
,因为它不安全且难以正确使用。要获得用户输入,请使用fgets()
。
答案 2 :(得分:0)
您的代码有几个问题:
scanf
。它应该像scanf("%s", s1)
;同样适用于s2。strcat
将其第二个参数附加到其第一个参数;只需使用它两次就可以在向量s3
中合并两个字符串。总之,您的代码应如下所示:
#include<stdio.h>
#include <string.h>
int main()
{
char s1[10],s2[10],s3[20];
scanf("%s",s1);
scanf("%s",s2);
strcat(s3,s1);
strcat(s3,s2);
printf("%s",s3);
printf("\n");
return 0;
}
请记住,您的s3
向量必须足够大才能包含两个字符串。
答案 3 :(得分:0)
#include <stdio.h>
int main(void){
char s1[10], s2[10], s3[20];
int i, j, n=1;
scanf("%9s", s1);
scanf("%9s", s2);
sprintf(s3, "%s%s", s1, s2);
printf("%s\n",s3);
return 0;
}
答案 4 :(得分:0)
你可能正在做一个免费的在线课程&#34;编程,数据结构&amp;算法&#34;在https://onlinecourses.nptel.ac.in
无论如何,答案是:
#include <stdio.h>
#include <string.h>
int main() {
char a[20], b[10], c;
int x[20];
int i,j,l,n,swap;
scanf("%s",a);
scanf("%s",b);
strcat(a,b);
l=strlen(a);
for(i=0; i<l; i++) {
n = a[i];
x[i] = n;
}
for(i=0; i<(l-1); i++) {
for(j=0; j<(l-i-1); j++) {
if(x[j]>x[j+1]) {
swap = x[j];
x[j] = x[j+1];
x[j+1] = swap;
}
}
}
for(i=0; i<l; i++) {
c = x[i];
printf("%c",c);
}
}
答案 5 :(得分:0)
如果你真的想要this,你应该编辑问题。
首先,如果您声明为char arr[10];
,请阅读scanf("%s",arr);
所以你读了两个词:
scanf("%s",s1);
scanf("%s",s2);
好的,现在要合并两个长度为10
的单词,首先将结果数组声明为10
的两倍。
所以这里是完整的代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int compare (const void * a, const void * b)
{
return ( *(char*)a - *(char*)b );
}
int main()
{
char s1[10],s2[10],s3[20];
scanf("%s",s1);
scanf("%s",s2);
strcpy(s3,s1); // copies content of s1 to s3
strcat(s3,s2); // merges to end of s3 the content of s2
qsort(s3,strlen(s3),sizeof(char),compare); //sorts s3
printf("%s",s3);
return 0;
}
见qsort()。