有关在没有\0的情况下文件名长度的问题
大家好,这道题本身没有问题主要是对文件名长度有疑问,用/**/标出,请高手解答
这道题意思是将原文件名的前5个字符复制给新文件,当新文件名,然后把原文件每3个中的一个字符复制给新文件
这道题意思是将原文件名的前5个字符复制给新文件,当新文件名,然后把原文件每3个中的一个字符复制给新文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN 10
int main(void)
{
FILE *in, *out;
int ch;
char source[LEN];
char cpy[LEN];
int count = 0;
printf("请输入文件名:\n");
scanf("%s",source);
if ((in = fopen(source, "r")) == NULL)
{
fprintf(stderr, "I couldn't open the file \"%s\"\n",
source);
exit(2);
}
strncpy(cpy,source, LEN - 5);
//cpy[LEN - 5] = '\0';
/*就是这个注释,正确的时候应该不注释它。当我注释后运行时,最多只能输入4个字符的文件名,可以创建成功,再多
就会说fprintf里的"Can't create output file."。我想道字符串没有添加\0为知什么还能在不多于4个字符的文件名的
时候创建文件,多于4个就出错了,这是为什么呢?如果没有添加\0,他应该多少字符都出错,为什么只是在4个字符以上才
出错?*/
strcat(cpy,".txt");
if ((out = fopen(cpy, "w")) == NULL)
{
fprintf(stderr,"Can't create output file.\n");
exit(3);
}
while ((ch = getc(in)) != EOF)
if (count++ % 3 == 0)
putc(ch, out);
if (fclose(in) != 0 || fclose(out) != 0)
fprintf(stderr,"Error in closing files\n");
return 0;
}
...全文
相关推荐
关于\0'字符串结束标志
本文介绍了C语言中字符串结束标志符'\0'的使用。
C/C++中获取数组长度的方法示例
主要介绍了C/C++中获取数组长度的方法,很实用的一种方法,需要的朋友可以参考下
C语言中计算字符串长度与分割字符串的方法
主要介绍了C语言中计算字符串长度与分割字符串的方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
小贴士:关于\0字符串结束标志
while(*ddata!='\0') DisplayOneChar_LCD(x++,y,*ddata++);
深入理解c语言‘\0’ ,‘0’, “0” ,0之间的区别
看来基础还是很重要的,基础不扎实就难以学好c语言,就别说写出高质量的c语言代码了。今天,我就被这个问题折磨的不行了,哈哈,不过现在终于明白了‘\0’ ,‘0’, “0” 之间的区别了。


