2013-12-16 52 views
-4

在我的项目中,我有一个文件作为输入,我需要输出文件和一个新的扩展名。假设我的输入文件是file.txt,这里是name。我需要输出文件file.dic。我尝试了以下。使用不同的扩展名创建新文件

fpout = fopen(strcat(name,".dic"), WRITE_ONLY); 

我知道这不是正确的方法。但是,我应该怎么做才能得到file.dic的文件名?

+0

你的括号是不平衡的。 – Potatoswatter

+1

“显然”,你必须用'dic'替换'txt'。这只是标准的字符串,所以有什么问题? – usr2564301

+0

当把''file.txt''与'“.dic”'连接起来时,你会期望什么? –

回答

0

如果你只是想改变文件扩展名,这是一个简单的方法来做到这一点。

int lenght; 

lenght = strlen(name); 

name[lenght - 1] = c; 
name[lenght - 2] = i; 
name[lenght - 3] = d; 
name[lenght - 4] = .; 

你也可以使用while,虽然你不检查'。'增加i,然后以相同的方式更改扩展名。

strncpy (strstr (name,"txt"),"dic",3); 
+0

这可能不起作用有两个原因。首先,名称可以在OP代码的只读部分中(当声明为即时)时。其次,你的代码将从C字符串中删除终止的零,这通常是致命的。 – usr2564301

+0

它不会删除终止零。斯特伦不给我长+ 1我认为,不是? – Gabson

+0

数组索引从0开始。在C和C++中,访问'array [sizeOfArray]'超出限制。如果是字符串'string [lengthOfString]'则指向终止符。如果输入文件名突然有不同的扩展名,或者根本没有扩展名,代码也可能会产生未解决的结果。 – Peter

2
char * newstr; 
    newstr = strstr (name,"txt");// name = "file.txt" 
    strncpy (newstr,"dic",3); 
    //newstr = file.dic 

这将取代file.txtfile.dic

相关问题