30/09/2018, 17:07
Vấn đề truyền tham số argv vào hàm!
Mình đang làm một chương trình về chuyển đổi ngày trong năm và ngày trong tháng. Chương trình như sau:
#include <iostream>
using namespace std;
static char* name[] = { "Invavlid month", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static int daytab[][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };
int day_of_year(int year, int month, int day)
{
int leap = (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 1 : 0;
for (int i = 1; i < month; i++)
day += daytab[leap][i];
return day;
}
void day_of_month(int year, int day_of_year, int &month, int &day)
{
month = 1;
int leap = (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 1 : 0;
while (day_of_year > daytab[leap][month])
{
day_of_year -= daytab[leap][month++];
}
day = day_of_year;
}
int month_search(char **argv)
{
cout << *argv;
for (int i = 1; i < 13; i++)
if (strcmp(*argv, name[i])==0)
return i;
}
int main(int argc, char* argv[])
{
//Specify Command-line
if (!strcmp(*++argv,"day_of_year"))
{
//Form: day_of_year 2015 May 12
int day = day_of_year(atoi(*++argv), month_search(*++argv), atoi(*++argv));
cout << "This is the " << day << "-th day of year.";
}
else if (!strcmp(*argv,"day_of_month"))
{
//Form: day_of_month 2015 36
int month, day;
day_of_month(atoi(*++argv), atoi(*++argv), month, day);
cout << "The day is " << day << " of " << name[month];
}
else
cout << "Invalid command";
cout << endl;
system("pause");
}
Nhưng không hiểu sao ở hàm day_of_month thì việc truyền tham số argv (ở đây mình định truyền tên tháng vào vd: “May” vào hàm month_search) bị lỗi. Mong mọi người giúp mình tìm vấn đề ở bài này với. Cảm ơn mọi người.
P/s: Mọi người thông cảm vì mình viết hơi khó hiểu chút nhưng mình thực sự cần giúp đỡ!
Bài liên quan
lỗi là lỗi gì vậy bạn, dòng nào, cột nào v.v…
Hàm month_search của bạn khi dùng thử bỏ dấu * trước đi. Vì tham số là char **
Mình còn chưa tìm ra lỗi mà bạn
Khi sửa lại như thế thì cú pháp thì đúng nhưng mà vẫn bị sai bạn ah. Mình có sửa lại như bạn nói thì kết quả vẫn sai.
Mình có in ra tham số truyền vào ở hàm month_search ấy. Command line của mình như ở form ở phần chú thích. thì nó lại in ra 12 thay vì xâu “May”.