#include <stdio.h> #include <string.h> #define size 20 int BF(char S[], char T[]); char* delet(char S[], char T[], int n); int main() { int i; int j; char a[]; char S[] = "10 20 30"; char T[] = "40"; printf("新换进去的数字是"); scanf("%s", &a[]); int start = BF(S, T); if (start != 0) {printf("子串在主串中的起始位置是:%d\n", start); printf("替换子串后的结果是:%s\n", insert(S, T, start)); } else {printf("子串不在主串中\n"); } return 0;} int BF(char S[], char T[]) { int start = 0; int i = 0, j = 0; while ((S[i] != '\0') && (T[j] != '\0')) { if (S[i] == T[j]) { i++; j++; } else { start++; i = start; j = 0; } } if (T[j] == '\0') { return start; } else { return 0; }} char* delet(char S[], char T[], int n) { int lena, lenb, i, j; lena = strlen(S);//主串长度 lenb = strlen(T);//子串长度 for (i = n; i < lena - lenb; i++) { S[i] = S[i + lenb]; } S[i + lenb] = '\0'; return S;} char* insert(char S[], char T[], int n,char a[]) { int lena, lenb, i, j; int x = 0; lena = strlen(S);//主串长度 lenb = strlen(a);//新串长度 for (i = n;i < lena - lenb;i++;x++) { S[i + lenb]=S[i]; S[i] = a[0]; } return S; }这串代码有哪些错误
时间: 2023-06-19 14:03:35 浏览: 61
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码有很多错误,下面列举一些:
1. 在定义字符数组 a[] 时应该指定数组大小,例如 char a[size];
2. 在读取用户输入的新数字时,应该使用 scanf("%s", a) 而不是 scanf("%s", &a[]);
3. 函数 insert() 的参数列表中缺少了一个参数,应该加上 char a[],表示要插入的新数字;
4. insert() 函数中的 for 循环语句中,应该是 i++ 而不是 i++;
5. 函数 insert() 中的变量 x 没有用到,应该删除;
6. 在 main() 函数中,调用 insert() 函数时应该传入 a[] 数组作为参数,表示要插入的新数字;
7. 在调用 scanf() 函数时,应该使用 &a[0] 而不是 &a[];
8. 在调用 insert() 函数时,第三个参数应该传入 start - 1,因为字符串下标从 0 开始,而 BF() 函数返回的是子串在主串中的起始位置,所以要减去 1。
除此之外,还有其他可能的错误,需要仔细检查代码。
阅读全文