簡體   English   中英

如何添加兩個字符串?

[英]How can I add two strings?

我要添加的大小5(我要添加的條件)。 兩個字符串的格式均為00:00。 第一個字符串(s1)表示飛機的特定起飛時間,第二個字符串表示該飛機起飛的延遲時間……這應該在24小時制完成。

假設s1 = 10:45 s1 = 01:50

所以首先我必須將5和0相加,看看是否有進位,並且結果是否低於9,然后將4和5相加,看看結果是否低於6。如果不是,我減去6到加法並將進位(1)加到0和1,然后將1加到0。

5 + 0 = 5

4 + 5 = 9 9-6 = 3執行:1

0 + 1 + 1 = 2

0 + 1 = 1

12:35

我想得到的是s1 = 12:35

我真的不了解指針的工作原理...我試圖理解它們,但這是徒勞的...

你能幫助我嗎?

我有一些想法要在這里發布:

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

char*add_hours(char s1[], char s2[])
   int i;
   for(i=4; i>3; i--){
    if(s1[i]+s2[i]>9){
      strcpy(s1[i], ((s1[i]+s2[i])-10); 
      strcpy(s1[i-1], (s1[i-1]+1));
    } 
...
}

該代碼會持續一會兒,但會重復幾次。 因此,我認為我不需要在這里復制所有內容。 問題是,他一直告訴我顯示此警告:

"warning: passing argument 1 of 'strcpy' makes pointer from integer without a cast /usr/include/string.h:128: note: expected 'const char * _restrict_' but argument if of type 'int'

對於第二個參數,每一個strcpy都有...我理解錯誤(我認為),但是我不知道如何糾正它...

我可能是錯的,但我認為您不想添加這樣的內容。

如果您在00:30出發並在04:00到達,但在兩者之間進行夏令時,會發生什么情況?

填充一個time_t結構。 將其轉換為time_t。 添加您的延遲(以秒為單位)。 將其轉換回time_t。 使用strftme()打印出來。 讓C庫中的時間代碼處理所有這些問題。

首先,您應該刪除for循環。 它僅進行了2次迭代,令人困惑。
然后,函數的第一行應為

 char * sum = new char[5];

因為您可能想返回一個新字符串。 這也會使事情變得更清楚。

嘗試分解事物以簡化問題。 動筆:

int minutes(char * s);
int hours(char * s);

分別返回以字符串表示的分鍾和小時數。

strcpy需要將字符串(char / char指針數組)作為其參數。 您給的是單個字符。 如果您想以這種方式修改單個字符,則無需使用strcpy

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

char*add_hours(char s1[], char s2[])
   int i;
   for(i=4; i>3; i--){
    if(s1[i]+s2[i]>9){
      s1[i] = (s1[i]+s2[i])-10; 
      s1[i-1] = s1[i-1]+1;
    } 
...
}

該代碼還有其他邏輯問題,但這應該可以幫助您入門。

#include <stdlib.h>
#include <string.h>

const int MINS_IN_HR = 60;

int StrToMins(char* str)
{
    int res = 0;
    char temp[3];   
    temp[2] = '\0';
    memcpy(temp, str, 2);   
    res += atoi(temp)*MINS_IN_HR;
    memcpy(temp, str+3, 2); 
    res += atoi(temp);
    return res;
}

int _tmain(int argc, _TCHAR* argv[])
{
    char* s1="10:45", *s2="01:50";
    int totalMins = StrToMins(s1) + StrToMins(s2);

    printf("%d:%d", totalMins / MINS_IN_HR, totalMins % MINS_IN_HR);
    return 0;
}

暫無
暫無

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

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