sách gpt4 ăn đã đi

C - 第三次 scanf 修改第二次 scanf 中的变量

In lại Tác giả: Walker 123 更新时间:2023-11-30 15:45:45 29 4
mua khóa gpt4 giày nike

我想我已经尝试过任何方法(刷新 stdin、scanf 以使用换行符等),但没有任何效果如我所希望的那样。由于某种原因,第三个 scanf 在以下代码中修改了第二个 scanf 中的变量:

#include 

int main()
{
char first_name[16], last_name[21];
char filename[11];
FILE *opening;

printf("The program saves your first and last name into a file.\n");

printf("Enter your first name:");
scanf("%s", first_name);
getchar();

printf("Enter your last name:");
scanf(" %s", last_name);
getchar();

printf("File where you want to save your name:");
scanf(" %s", filename);

opening = fopen(filename, "wb");

fprintf(opening, "%s %s", first_name, last_name);
printf("\nSuccessfully saved the data!");

fclose(opening);

trả về 0;
}

Đầu ra:

The program saves your first and last name into a file.
Enter your first name: John
Enter your last name: Doe
File where you want to save your name: filename.txt

Successfully saved the data!

一切都很好,除了 filename.txt 的内容是这样的:

John t

我猜测“t”字符以某种方式来自“txt”,但我刚刚开始学习 C,我不知道如何修复这段代码以使其工作。请问各位高手能帮帮我吗?

câu trả lời hay nhất

您的文件名缓冲区太小。

您编写 filename.txt,它有 12 个字符,加上零来完成它,得到 13。您只分配 11。尝试如下:

char filename[20];

它应该可以工作。

sử dụng scanf 时要小心,它可能会导致非常严重的问题,就像您现在遇到的那样。它对于实验和学习 C 很有帮助,因为它向您展示了正确的内存处理是多么重要。对于任何实际项目,您应该考虑使用不同的函数或框架。

关于C - 第三次 scanf 修改第二次 scanf 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831702/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress