#include <stdio.h> #include <string.h> int main() { char a[1005],b[1005]; int i, q, count = 0; scanf_s("%d", &q); fgets(a, 101, stdin); for (i = 0; i < q; i++) { int num; scanf_s("%d", &num); if (num == 1) { fgets(b, 101, stdin); strcat_s(a, b); printf("%s\n", a); } if (num == 2) { int x, y; scanf_s("%d %d", &x, &y); a[x + y] = '\0'; strcpy_s(b, &a[x]); strcpy_s(a, b); printf("%s\n", a); } if (num == 3) { int x; scanf_s("%d", &x); fgets(b, 101, stdin); strcat_s(b, &a[x]); a[x] = '\0'; strcat_s(a, b); printf("%s\n", a); } if (num == 4) { fgets(b, 101, stdin); char* ans = strstr(a, b); printf("%d\n", ans != NULL ? (int)(ans - a) : -1); } } return 0; }这个代码为什么没有输出,有问题
时间: 2024-03-23 14:42:42 浏览: 28
这个代码没有输出是因为在第一个`fgets`函数中,输入的是一个数字,但是输入后还会留下一个回车符,导致后面的`fgets`函数读入的是一个空字符串。因此,我们需要在第一个`fgets`函数之后加上一行代码,将多余的回车符从输入缓冲区中读取出来。可以使用`getchar()`函数来完成这个操作。
另外,使用`scanf_s`函数时,需要在格式字符串中指定输入缓冲区的大小,否则会报错。可以将`%d`改为`%d\n`,并在后面加上一个数字,表示缓冲区的大小。
修改后的代码如下所示:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[1005], b[1005];
int i, q, count = 0;
scanf_s("%d\n", &q);
fgets(a, 101, stdin); // 读取多余的回车符
for (i = 0; i < q; i++) {
int num;
scanf_s("%d", &num);
if (num == 1) {
fgets(b, 101, stdin);
strcat_s(a, 101, b);
printf("%s\n", a);
}
if (num == 2) {
int x, y;
scanf_s("%d %d", &x, &y);
a[x + y] = '\0';
strcpy_s(b, 101, &a[x]);
strcpy_s(a, 101, b);
printf("%s\n", a);
}
if (num == 3) {
int x;
scanf_s("%d", &x);
fgets(b, 101, stdin);
strcat_s(b, 101, &a[x]);
a[x] = '\0';
strcat_s(a, 101, b);
printf("%s\n", a);
}
if (num == 4) {
fgets(b, 101, stdin);
char* ans = strstr(a, b);
printf("%d\n", ans != NULL ? (int)(ans - a) : -1);
}
}
return 0;
}
```
注意,除了上述的修改之外,我们还需要在调用`strcat_s`和`strcpy_s`函数时,指定目标缓冲区的大小,以避免缓冲区溢出导致程序崩溃。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)