如何将两个变量写入 .txt 文件中的同一行?铿锵
How to write two variables to the same line in .txt file? C lang
我需要将两个变量写入一个文本文件,它们之间有一个 space,我希望我的文本文件看起来像:
log.txt
www.google.com feb17202101
www.yahoo.com feb17202102
www.xyz.com feb17202103
域名和日期存储在两个字符数组中。
我的代码
FILE *fp;
fp = fopen("log.txt", "w+");
if(fp == NULL)
{
printf("Could not open file 31");
exit(0);
}
fprintf(fp,"%s %s\n",domainName, fileName);
(域名和文件名是两个独立的字符数组)
我希望这会打印我的两个变量,它们之间有一个 space 并转到下一行,这样当我的函数需要再次写入文本文件时,它将在新的一行上。
我的文本文件看起来像
www.google.com
022321224825
这似乎应该是我的程序中最简单的部分,但那是我整天编码的日子之一,现在我的大脑感觉炸了哈哈。我不知道如何正确格式化它。如果有人能帮助我,我将不胜感激!
正如评论中指出的那样,我认为 domainname
数组本身有一个换行符。当我尝试将两个简单数组写入这样的文件时;
char domainNames[3][20] = {"www.google.com", "www.yahoo.com", "www.xyz.com"};
char timestamps[3][20] = {"feb17202101", "feb17202102", "feb17202103"};
for (int i = 0; i < 3; i++) {
fprintf(fp,"%s %s\n",domainNames[i], timestamps[i]);
}
这将打印以下输出:
c-posts : $ cat log.txt
www.google.com feb17202101
www.yahoo.com feb17202102
www.xyz.com feb17202103
如果您使用 fgets()
从用户输入中获得 domainname
和 timestamp
,则会在末尾添加一个换行符。你可能想要 trim 它:
void trimTrailingNewline(char input[]) {
input[strcspn(input, "\n")] = 0;
}
然后您可以使用它在写入文件之前或作为用户输入读取之后删除尾随换行符:
for (int i = 0; i < 3; i++) {
trimTrailingNewline(domainNames[i]);
trimTrailingNewline(timestamps[i]);
fprintf(fp,"%s %s\n", domainNames[i], timestamps[i]);
}
我需要将两个变量写入一个文本文件,它们之间有一个 space,我希望我的文本文件看起来像:
log.txt
www.google.com feb17202101
www.yahoo.com feb17202102
www.xyz.com feb17202103
域名和日期存储在两个字符数组中。
我的代码
FILE *fp;
fp = fopen("log.txt", "w+");
if(fp == NULL)
{
printf("Could not open file 31");
exit(0);
}
fprintf(fp,"%s %s\n",domainName, fileName);
(域名和文件名是两个独立的字符数组) 我希望这会打印我的两个变量,它们之间有一个 space 并转到下一行,这样当我的函数需要再次写入文本文件时,它将在新的一行上。
我的文本文件看起来像
www.google.com
022321224825
这似乎应该是我的程序中最简单的部分,但那是我整天编码的日子之一,现在我的大脑感觉炸了哈哈。我不知道如何正确格式化它。如果有人能帮助我,我将不胜感激!
正如评论中指出的那样,我认为 domainname
数组本身有一个换行符。当我尝试将两个简单数组写入这样的文件时;
char domainNames[3][20] = {"www.google.com", "www.yahoo.com", "www.xyz.com"};
char timestamps[3][20] = {"feb17202101", "feb17202102", "feb17202103"};
for (int i = 0; i < 3; i++) {
fprintf(fp,"%s %s\n",domainNames[i], timestamps[i]);
}
这将打印以下输出:
c-posts : $ cat log.txt
www.google.com feb17202101
www.yahoo.com feb17202102
www.xyz.com feb17202103
如果您使用 fgets()
从用户输入中获得 domainname
和 timestamp
,则会在末尾添加一个换行符。你可能想要 trim 它:
void trimTrailingNewline(char input[]) {
input[strcspn(input, "\n")] = 0;
}
然后您可以使用它在写入文件之前或作为用户输入读取之后删除尾随换行符:
for (int i = 0; i < 3; i++) {
trimTrailingNewline(domainNames[i]);
trimTrailingNewline(timestamps[i]);
fprintf(fp,"%s %s\n", domainNames[i], timestamps[i]);
}