选择将文件写入特定目录

时间:2016-01-20 12:04:42

标签: c fopen c-strings

所以我正在尝试创建一个文件并将其保存到所需的目录中。

例如:user-input:

指南? BEGIN select new.transactionid := CONCAT('T', YEAR(now()), LPAD(COALESCE(MAX(SUBSTR(TRANSACTION_ID, 5, 5) + 1 ), 1 ), 5, 0) from transaction t where TRANSACTION_ID LIKE CONCAT(YEAR(now()), '%') END;

名称? c:\user\sample\

这是我到目前为止所尝试的:

hello.txt

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

一些问题:

  • 您必须使用strcat()来连接字符串。

  • 在打开它之前,您正在阅读out_file

    fgets(str,sizeof str,out_file);
    fgets(str2,sizeof str2,out_file);
    

一个简单的例子(没有完成错误检查):

char str[200], str2[200];
char fname[400];
FILE *out_file;

printf("\nEnter path: ");
scanf("%199s", str);  
printf("\nEnter filename: ");
scanf("%199s", str2);

strcpy(fname, str);
strcat(fname, str2);

out_file = fopen(fname, "w");

或者,更短的方式:

char str[400],str2[200];
FILE * out_file;

printf("\nEnter path: ");
scanf("%199s", str);  
printf("\nEnter filename: ");
scanf("%199s", str2);

strcat(str, str2);

out_file = fopen(str, "r");

答案 1 :(得分:1)

请参阅How to concatenate 2 strings in C?

此外,您应该使用strcat

查看this教程。

这方面的一个例子是:

/* Example using strcat by TechOnTheNet.com */

#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[])
{
   /* Define a temporary variable */
   char example[100];

   /* Copy the first string into the variable */
   strcpy(example, "TechOnTheNet.com ");

   /* Concatenate the following two strings to the end of the first one */
   strcat(example, "is over 10 ");
   strcat(example, "years old.");

   /* Display the concatenated strings */
   printf("%s\n", example);

   return 0;
}

在你的情况下,它将是:

char file_name[200 + 200];
file_name [0] = '\0'                    // To make sure that it's a valid string.

strcpy (file_name, str);                // Concatenate `str` and `file_name`
strcat(file_name, str2);                // Concatenate `str2` and `file_name`

out_file = fopen(file_name, "w");       // Open the file.

另外,感谢&#39; laerne&#39;指出一些错误。

答案 2 :(得分:0)

你不能在C中连接这样的字符串! *

您最好使用strcat

try {
    $date = new DateTime('2016-12-12');
    $date->modify('+1 dayBLA');
    echo $date->format('Y-m-d');
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

*虽然您可以添加指针。在你的情况下,它没有做你期望的。