簡體   English   中英

如何將兩個變量寫入.txt文件的同一行? C朗

[英]How to write two variables to the same line in .txt file? C lang

我需要將兩個變量寫入一個文本文件,它們之間有一個空格,我希望我的文本文件看起來像:

日志.txt

www.google.com feb17202101
www.yahoo.com feb17202102
www.xyz.com feb17202103

域名和日期存儲在兩個字符 arrays 中。

我的代碼

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);

(域名和文件名是兩個單獨的字符數組)我希望這會打印我的兩個變量,它們之間有一個空格,並且 go 到下一行,所以當我的 function 需要再次寫入文本文件時,它將是一個新的線。

相反,我的文本文件看起來像

www.google.com
  022321224825

這似乎應該是我程序中最簡單的部分,但這是我整天編碼的那些日子之一,現在我的大腦感覺很煎熬哈哈。 我無法弄清楚如何正確格式化它。 如果有人可以幫助我,我將不勝感激!

正如評論中指出的那樣,我認為您在domainname數組本身中有一個換行符。 當我嘗試將兩個簡單的 arrays 寫入這樣的文件時;

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]);
}

這將打印以下 output:

c-posts : $ cat log.txt 
www.google.com feb17202101
www.yahoo.com feb17202102
www.xyz.com feb17202103

如果您使用fgets()從用戶輸入中獲取domainnametimestamp ,則會在末尾添加一個換行符。 你可能想修剪它:

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]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM