#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
int main(void) {
char buff[8192] = { 0, };
int len = 0;
FILE* fp = NULL;
int count = 0;
int size = 0;
fopen_s(&fp, "lenovoLaptopNews2.txt", "rt");
fseek(fp, 0, SEEK_END);
len = ftell(fp);
fseek(fp, 0, SEEK_SET);
printf("len: %d\n", len);
for (int i = 0; i < len; i += 1)
buff[i] = fgetc(fp);
//fread(buff, 1, 5131, fp);
/*func(buff); printf("%s\n", buff);
len = strlen(buff);
printf("len:%d\n", len);
printf("%s\n",buff);*/
printf("%s\n", buff);
return 0;
}
我尝试读取"LenovoLaptopNews.txt“的内容,并将内容保存到buff变量中。然后使用printf("%s . ",buff.)打印它;但是它并不会打印所有字符和停止.我不知道如何解决这个问题..。请帮帮我..。
文件内容如下。
"lenovoLaptopNews2.txt"
文件名:
全球创新领袖联想正在更新其商业PC套件,为那些希望安排一个更健壮的在家工作设置的公司推出配备了AMD处理器的新产品。这些功能通过增强的远程工作能力得到了充分的优化,并以其更快的处理能力、随时随地的生产力和企业级安全功能,将家庭业务计算提升到了一个新的水平。联想发布了AMD驱动的商用笔记本电脑,以提升WFH experience ThinkPad T14“,自上一款推出以来,AMD Ryzen系列仅因其高效、快速的处理速度获得了技术行业的赞誉,即使同时用于几项密集任务。随着在家工作成为新的正常工作安排,我们决定将这些强大的处理器集成到我们的业务解决方案组合中,以进一步增强远程员工的能力,因为他们可以在不同的商业环境下显著提高我们的商业笔记本电脑的能力,“联想菲律宾总裁兼总经理迈克尔·恩甘( Michael Ngan )说。AMD Ryzen处理器的高效而强大的计算能力是通过它的“Zen”微体系结构来实现的,它包含多个内核和线程来完成计算繁重的工作。这使得Ryzen处理器可以携带几组不同的命令和响应来计算和呈现图形,运行软件等等,从而使它们成为通用办公应用程序、视频会议、实时分析、代码编译和3D视频渲染的理想处理器。同时,采用PRO技术的AMD™处理器不仅配备了多核和线程设置,而且还具有企业级安全功能,通过其GuardMI技术保护敏感信息。此功能提供实时加密系统内存,以帮助防止物理盗窃,AMD安全启动,帮助防止未经授权的软件和恶意软件接管关键的系统功能,并阻止恶意代码和未经授权的软件在启动期间加载。为多任务专业人员设计的工作马商务笔记本电脑,动力公司ThinkPad T14能够运行各种各样的商业程序,从简单到那些沉重的工作负荷与设备的AMD 7 Pro 4750U处理器,8核和16个线程,多达32 16 DDR4-3200内存,和高达1TB PCIeNVMe SSD存储器。T14还可以用它的50 up电池持续长达14小时。
另一方面,ThinkPad X13适合高度移动的现代专业人士,其超便携重量仅为1.28公斤和16.9mm薄。进一步增强X13的能力,而在前进的是它的48 with电池,可以持续12.8小时的使用,与快速充电支持,提供80%的电池容量,只需一个小时的充电。它还配备了一系列端口,包括USB3.2Gener1和USB3.2Ty-C,支持电源传递,允许更快地充电。为X13提供动力的是一个up toAMD Ryzen 7 Pro 4750 U处理器,有8个内核和16个线程,高达1TB的PCIeNVMe SSD存储器,以及高达32 up的DDR4内存选项。ThinkPad T14和X13都有集成的和Windows10Pro操作系统,这为商业打开了几个功能。这两个设备的键盘拥有统一通信支持,通过只需单击一个按钮就可以访问它们,从而优化了诸如打电话、即时消息和视频协作等功能。在休息期间,这两个设备也成为一个方便的娱乐工具,提供优质的音频播放系统,他们的杜比音频音箱系统和清晰的视频通过他们的全高清1920x1080 IPS防眩光显示与16:9的纵横比。为了增加安全性,联想在企业级的安全性和持久性方面,为ThinkPad T14和X13配备了全面的端到端安全的ThinkShield套件。它的一些特性包括加密敏感信息的dTPM 2.0芯片和用于生物识别访问的触摸指纹阅读器。买家还可以选择拥有PrivacyGuard安全产品,如果有人在看他们的screen.Furthermore,就会向用户发出警告。这两款设备都有着联想设备众所周知的传奇耐用性。他们已经测试了极端的条件,包括冲击,振动,铰链寿命,风扇的可靠性,运行温度和压力。ThinkPad T14和ThinkPad X13的价格取决于买方选择的配置。客户也可以购买配件,如ThinkPad USB,USB旅行集线器和USB3.0安全硬盘1TBseparately.Devices,配件可以通过授权的联想零售合作伙伴和他们各自的在线商店购买。有关如何为您的公司选择正确的工作技术的设备和技巧的更多信息,请在https://www.facebook.com/lenovophilippines/与联想联系,或访问https://www.lenovo.com/ph/en/.的网站。
发布于 2020-07-24 08:02:24
如果您在回答@ after 3629249后总是遇到同样的问题,我会给您这个打开和读取的方法,将内容文件保存在char *中。
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <sys/types.h>
int files_open(char const *path)
{
int fd = open(path, O_RDONLY); // open file in read only
if (fd < 0) {
write(2, "ERROR: failed open file\n", 24);
}
return (fd);
}
char *read_files(struct stat *file_info, char *path)
{
int fd = files_open(path);
stat(path, file_info); // fill stat struct
char *buffer = malloc(sizeof(char) * (file_info->st_size + 1));
int a = read(fd, buffer, file_info->st_size);
if (a < 0) // read failed
exit(84) // leave the program and return an error
buffer[file_info->st_size] = '\0';
return (buffer);
}
void main(void)
{
struct stat info;
char *data = read_files(&info, "YOUR PATH");
printf("%s", data);
free(data);
}
在这段代码中,我使用open
来打开文件并重新读取文件描述符。恢复fd之后,我将填充的stat结构,以了解需要读取多少字符,并对缓冲区进行malloc操作。最后,我使用read函数将每个字符保存到缓冲区中的文件中,并返回缓冲区。
man stat:http://www.linux-france.org/article/man-fr/man2/stat-2.html
城门开放:http://www.linux-france.org/article/man-fr/man2/open-2.html
发布于 2020-07-24 05:06:24
此问题是由于在utf-8模式下保存文本文件造成的。
只要把它保存在ANSI模式下,问题就会得到解决。
发布于 2020-07-24 07:39:32
为什么对printf()
的调用会提前停止打印?
因为UTF8可以有'0x00‘字节。而%s
在printf()
语句中遇到0x00
字节时停止输出。
通过在数据上使用L
修饰符可以(通常)克服上述问题。
https://stackoverflow.com/questions/63066098
复制相似问题