佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 873|回复: 14

C Language: 怎么debug这个coding?[已解决]

[复制链接]
发表于 16-10-2008 11:04 AM | 显示全部楼层 |阅读模式
  1. #include<stdio.h>
  2. int main()
  3. {
  4. struct dvd_details
  5. {
  6. char idno[20];
  7. char dvdTitle[50];
  8. int dvdDurationInHours;
  9. int dvdDurationInMinutes;
  10. char dvdClassification[10];
  11. char dvdAvailability[10];
  12. };

  13. struct dvd_details HORROR[100];
  14. struct dvd_details COMEDY[100];
  15. struct dvd_details ACTION[100];
  16. char availability;

  17. /////////////////////////////////////////////////
  18. //////////Input Details for HORROR dvds//////////
  19. /////////////////////////////////////////////////

  20. printf("Enter id number for a HORROR dvd: ";
  21. gets(HORROR[0].idno);
  22. printf("Enter title for a HORROR dvd: ";
  23. gets(HORROR[0].dvdTitle);
  24. printf("Enter duration for a HORROR dvd in hours: ";
  25. scanf("%d",&HORROR[0].dvdDurationInHours);
  26. printf("Enter duration for a HORROR dvd in minutes: ";
  27. scanf("%d",&HORROR[0].dvdDurationInMinutes);
  28. printf("Enter classification for a HORROR dvd: ";
  29. gets(HORROR[0].dvdClassification);
  30. printf("Enter availability for a HORROR dvd:\n";
  31. printf("Enter T for TRUE or enter F for FALSE: ";
  32. scanf("%c",availability);
  33. if (availability=='T'||availability=='t')
  34. {
  35. HORROR[0].dvdAvailability="TRUE";
  36. }
  37. else
  38. {
  39. HORROR[0].dvdAvailability="FALSE";
  40. }

  41. /////////////////////////////////////////////////
  42. //////////Input Details for COMEDY dvds//////////
  43. /////////////////////////////////////////////////

  44. printf("Enter id number for a COMEDY dvd: ";
  45. gets(COMEDY[0].idno);
  46. printf("Enter title for a COMEDY dvd: ";
  47. gets(COMEDY[0].dvdTitle);
  48. printf("Enter duration for a COMEDY dvd in hours: ";
  49. scanf("%d",&COMEDY[0].dvdDurationInHours);
  50. printf("Enter duration for a COMEDY dvd in minutes: ";
  51. scanf("%d",&COMEDY[0].dvdDurationInMinutes);
  52. printf("Enter classification for a COMEDY dvd: ";
  53. gets(COMEDY[0].dvdClassification);
  54. printf("Enter availability for a COMEDY dvd: \n";
  55. printf("Enter T for TRUE or enter F for FALSE: ";
  56. scanf("%c",availability);
  57. if (availability=='T'||availability=='t')
  58. {
  59. COMEDY[0].dvdAvailability="TRUE";
  60. }
  61. else
  62. {
  63. COMEDY[0].dvdAvailability="FALSE";
  64. }

  65. /////////////////////////////////////////////////
  66. //////////Input Details for ACTION dvds//////////
  67. /////////////////////////////////////////////////

  68. printf("Enter id number for a ACTION dvd: ";
  69. gets(ACTION[0].idno);
  70. printf("Enter title for a ACTION dvd: ";
  71. gets(ACTION[0].dvdTitle);
  72. printf("Enter duration for a ACTION dvd in hours: ";
  73. scanf("%d",&ACTION[0].dvdDurationInHours);
  74. printf("Enter duration for a ACTION dvd in minutes: ";
  75. scanf("%d",&ACTION[0].dvdDurationInMinutes);
  76. printf("Enter classification for a ACTION dvd: ";
  77. gets(ACTION[0].dvdClassification);
  78. printf("Enter availability for a ACTION dvd: \n";
  79. printf("Enter T for TRUE or enter F for FALSE: ";
  80. scanf("%c",availability);
  81. if (availability=='T'||availability=='t')
  82. {
  83. ACTION[0].dvdAvailability="TRUE";
  84. }
  85. else
  86. {
  87. ACTION[0].dvdAvailability="FALSE";
  88. }

  89. //////////////////////////////////////
  90. ////Print out HORROR dvd details////////
  91. //////////////////////////////////////
  92. printf("============================\n";
  93. printf("HORROR dvd details\n";
  94. printf("============================\n";
  95. printf("ID number for HORROR dvd: %s",HORROR[0].idno);
  96. printf("Title for HORROR dvd: %s",HORROR[0].dvdTitle);
  97. printf("Duration for HORROR dvd in hours: %d",HORROR[0].dvdDurationInHours);
  98. printf("Duration for HORROR dvd in minutes: %d",HORROR[0].dvdDurationInMinutes);
  99. printf("Classification for HORROR dvd: %s",HORROR[0].dvdClassification);
  100. printf("Availability for HORROR dvd: %s",HORROR[0].dvdAvailability);

  101. //////////////////////////////////////
  102. ////Print out COMEDY dvd details////////
  103. //////////////////////////////////////
  104. printf("============================\n";
  105. printf("COMEDY dvd details\n";
  106. printf("============================\n";
  107. printf("ID number for COMEDY dvd: %s",COMEDY[0].idno);
  108. printf("Title for COMEDY dvd: %s",COMEDY[0].dvdTitle);
  109. printf("Duration for COMEDY dvd in hours: %d",COMEDY[0].dvdDurationInHours);
  110. printf("Duration for COMEDY dvd in minutes: %d",COMEDY[0].dvdDurationInMinutes);
  111. printf("Classification for COMEDY dvd: %s",COMEDY[0].dvdClassification);
  112. printf("Availability for COMEDY dvd: %s",COMEDY[0].dvdAvailability);

  113. //////////////////////////////////////
  114. ////Print out ACTION dvd details////////
  115. //////////////////////////////////////
  116. printf("============================\n";
  117. printf("ACTION dvd details\n";
  118. printf("============================\n";
  119. printf("ID number for ACTION dvd: %s",ACTION[0].idno);
  120. printf("Title for ACTION dvd: %s",ACTION[0].dvdTitle);
  121. printf("Duration for ACTION dvd in hours: %d",ACTION[0].dvdDurationInHours);
  122. printf("Duration for ACTION dvd in minutes: %d",ACTION[0].dvdDurationInMinutes);
  123. printf("Classification for ACTION dvd: %s",ACTION[0].dvdClassification);
  124. printf("Availability for ACTION dvd: %s",ACTION[0].dvdAvailability);

  125. return 0;
  126. }
复制代码
都是一样的error:
error C2106: '=' : left operand must be l-value
怎么debug?
谢谢。。。

[ 本帖最后由 蜡笔小烦 于 19-10-2008 07:27 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 16-10-2008 11:15 AM | 显示全部楼层
char array 是不能直接 assign string 的,你必须使用 strcpy()。
回复

使用道具 举报

 楼主| 发表于 16-10-2008 11:33 AM | 显示全部楼层
原帖由 geekman 于 16-10-2008 11:15 AM 发表
char array 是不能直接 assign string 的,你必须使用 strcpy()。


  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char availability;
  6. struct dvd_details
  7. {
  8.   char idno[20];
  9.   char dvdTitle[50];
  10.   int dvdDurationInHours;
  11.   int dvdDurationInMinutes;
  12.   char dvdClassification[10];
  13.   char dvdAvailability[10];
  14.   
  15. };
  16. struct dvd_details HORROR[100];
  17. struct dvd_details COMEDY[100];
  18. struct dvd_details ACTION[100];

  19. /////////////////////////////////////////////////
  20. //////////Input Details for HORROR dvds//////////
  21. /////////////////////////////////////////////////
  22. printf("Enter id number for a HORROR dvd: ");
  23. gets(HORROR[0].idno);
  24. printf("Enter title for a HORROR dvd: ");
  25. gets(HORROR[0].dvdTitle);
  26. printf("Enter duration for a HORROR dvd in hours: ");
  27. scanf("%d",&HORROR[0].dvdDurationInHours);
  28. printf("Enter duration for a HORROR dvd in minutes: ");
  29. scanf("%d",&HORROR[0].dvdDurationInMinutes);
  30. printf("Enter classification for a HORROR dvd: ");
  31. gets(HORROR[0].dvdClassification);
  32. printf("Enter availability for a HORROR dvd:\n");
  33. printf("Enter T for TRUE or enter F for FALSE: ");
  34. scanf("%c",availability);
  35. if (availability=='T'||availability=='t')
  36. {
  37.   strcpy(HORROR[0].dvdAvailability,"TRUE");
  38. }
  39. else
  40. {
  41.   strcpy(HORROR[0].dvdAvailability,"FALSE");
  42. }
  43. /////////////////////////////////////////////////
  44. //////////Input Details for COMEDY dvds//////////
  45. /////////////////////////////////////////////////
  46. printf("Enter id number for a COMEDY dvd: ");
  47. gets(COMEDY[0].idno);
  48. printf("Enter title for a COMEDY dvd: ");
  49. gets(COMEDY[0].dvdTitle);
  50. printf("Enter duration for a COMEDY dvd in hours: ");
  51. scanf("%d",&COMEDY[0].dvdDurationInHours);
  52. printf("Enter duration for a COMEDY dvd in minutes: ");
  53. scanf("%d",&COMEDY[0].dvdDurationInMinutes);
  54. printf("Enter classification for a COMEDY dvd: ");
  55. gets(COMEDY[0].dvdClassification);
  56. printf("Enter availability for a COMEDY dvd: \n");
  57. printf("Enter T for TRUE or enter F for FALSE: ");
  58. scanf("%c",availability);
  59. if (availability=='T'||availability=='t')
  60. {
  61.   strcpy(COMEDY[0].dvdAvailability,"TRUE");
  62. }
  63. else
  64. {
  65.   strcpy(COMEDY[0].dvdAvailability,"FALSE");
  66. }
  67. /////////////////////////////////////////////////
  68. //////////Input Details for ACTION dvds//////////
  69. /////////////////////////////////////////////////
  70. printf("Enter id number for a ACTION dvd: ");
  71. gets(ACTION[0].idno);
  72. printf("Enter title for a ACTION dvd: ");
  73. gets(ACTION[0].dvdTitle);
  74. printf("Enter duration for a ACTION dvd in hours: ");
  75. scanf("%d",&ACTION[0].dvdDurationInHours);
  76. printf("Enter duration for a ACTION dvd in minutes: ");
  77. scanf("%d",&ACTION[0].dvdDurationInMinutes);
  78. printf("Enter classification for a ACTION dvd: ");
  79. gets(ACTION[0].dvdClassification);
  80. printf("Enter availability for a ACTION dvd: \n");
  81. printf("Enter T for TRUE or enter F for FALSE: ");
  82. scanf("%c",availability);
  83. if (availability=='T'||availability=='t')
  84. {
  85.   strcpy(ACTION[0].dvdAvailability,"TRUE");
  86. }
  87. else
  88. {
  89.   strcpy(ACTION[0].dvdAvailability,"FALSE");
  90. }
  91. //////////////////////////////////////
  92. ////Print out HORROR dvd details//////
  93. //////////////////////////////////////
  94. printf("============================\n");
  95. printf("HORROR dvd details\n");
  96. printf("============================\n");
  97. printf("ID number for HORROR dvd: %s",HORROR[0].idno);
  98. printf("Title for HORROR dvd: %s",HORROR[0].dvdTitle);
  99. printf("Duration for HORROR dvd in hours: %d",HORROR[0].dvdDurationInHours);
  100. printf("Duration for HORROR dvd in minutes: %d",HORROR[0].dvdDurationInMinutes);
  101. printf("Classification for HORROR dvd: %s",HORROR[0].dvdClassification);
  102. printf("Availability for HORROR dvd: %s",HORROR[0].dvdAvailability);
  103. //////////////////////////////////////
  104. ////Print out COMEDY dvd details//////
  105. //////////////////////////////////////
  106. printf("============================\n");
  107. printf("COMEDY dvd details\n");
  108. printf("============================\n");
  109. printf("ID number for COMEDY dvd: %s",COMEDY[0].idno);
  110. printf("Title for COMEDY dvd: %s",COMEDY[0].dvdTitle);
  111. printf("Duration for COMEDY dvd in hours: %d",COMEDY[0].dvdDurationInHours);
  112. printf("Duration for COMEDY dvd in minutes: %d",COMEDY[0].dvdDurationInMinutes);
  113. printf("Classification for COMEDY dvd: %s",COMEDY[0].dvdClassification);
  114. printf("Availability for COMEDY dvd: %s",COMEDY[0].dvdAvailability);
  115. //////////////////////////////////////
  116. ////Print out ACTION dvd details//////
  117. //////////////////////////////////////
  118. printf("============================\n");
  119. printf("ACTION dvd details\n");
  120. printf("============================\n");
  121. printf("ID number for ACTION dvd: %s",ACTION[0].idno);
  122. printf("Title for ACTION dvd: %s",ACTION[0].dvdTitle);
  123. printf("Duration for ACTION dvd in hours: %d",ACTION[0].dvdDurationInHours);
  124. printf("Duration for ACTION dvd in minutes: %d",ACTION[0].dvdDurationInMinutes);
  125. printf("Classification for ACTION dvd: %s",ACTION[0].dvdClassification);
  126. printf("Availability for ACTION dvd: %s",ACTION[0].dvdAvailability);
  127. return 0;
  128. }

复制代码

warning C4700: local variable 'availability' used without having been initialized

我试着去debug它
结果error反而更多。。
回复

使用道具 举报

发表于 16-10-2008 11:38 AM | 显示全部楼层
scanf("%c",availability);

应该是

scanf("%c",&availability);

你要让scanf指导储存的地方的地址是什么, 说以必须用address operator &。
回复

使用道具 举报

 楼主| 发表于 16-10-2008 11:41 AM | 显示全部楼层
原帖由 onlylonly 于 16-10-2008 11:38 AM 发表
scanf("%c",availability);

应该是

scanf("%c",&availability);

你要让scanf指导储存的地方的地址是什么, 说以必须用address operator &。


真是的
不可原谅的错误。。。。
不好意思
谢谢
回复

使用道具 举报

 楼主| 发表于 16-10-2008 12:10 PM | 显示全部楼层
  1. #include
  2. #include
  3. int main()
  4. {
  5. char availability;
  6. struct dvd_details
  7. {
  8. char idno[20];
  9. char dvdTitle[50];
  10. int dvdDurationInHours;
  11. int dvdDurationInMinutes;
  12. char dvdClassification[10];
  13. char dvdAvailability[10];

  14. };

  15. struct dvd_details HORROR[100];
  16. struct dvd_details COMEDY[100];
  17. struct dvd_details ACTION[100];


  18. /////////////////////////////////////////////////
  19. //////////Input Details for HORROR dvds//////////
  20. /////////////////////////////////////////////////

  21. printf("Enter id number for a HORROR dvd: ");
  22. gets(HORROR[0].idno);
  23. printf("Enter title for a HORROR dvd: ");
  24. gets(HORROR[0].dvdTitle);
  25. printf("Enter duration for a HORROR dvd in hours: ");
  26. scanf("%d",&HORROR[0].dvdDurationInHours);
  27. printf("Enter duration for a HORROR dvd in minutes: ");
  28. scanf("%d",&HORROR[0].dvdDurationInMinutes);
  29. printf("Enter classification for a HORROR dvd: ");
  30. gets(HORROR[0].dvdClassification);
  31. printf("Enter availability for a HORROR dvd:\n");
  32. printf("Enter T for TRUE or enter F for FALSE: ");
  33. scanf("%c",&availability);
  34. if (availability=='T'||availability=='t')
  35. {
  36. strcpy(HORROR[0].dvdAvailability,"TRUE");
  37. }
  38. else
  39. {
  40. strcpy(HORROR[0].dvdAvailability,"FALSE");
  41. }

  42. /////////////////////////////////////////////////
  43. //////////Input Details for COMEDY dvds//////////
  44. /////////////////////////////////////////////////

  45. printf("Enter id number for a COMEDY dvd: ");
  46. gets(COMEDY[0].idno);
  47. printf("Enter title for a COMEDY dvd: ");
  48. gets(COMEDY[0].dvdTitle);
  49. printf("Enter duration for a COMEDY dvd in hours: ");
  50. scanf("%d",&COMEDY[0].dvdDurationInHours);
  51. printf("Enter duration for a COMEDY dvd in minutes: ");
  52. scanf("%d",&COMEDY[0].dvdDurationInMinutes);
  53. printf("Enter classification for a COMEDY dvd: ");
  54. gets(COMEDY[0].dvdClassification);
  55. printf("Enter availability for a COMEDY dvd: \n");
  56. printf("Enter T for TRUE or enter F for FALSE: ");
  57. scanf("%c",&availability);
  58. if (availability=='T'||availability=='t')
  59. {
  60. strcpy(COMEDY[0].dvdAvailability,"TRUE");
  61. }
  62. else
  63. {
  64. strcpy(COMEDY[0].dvdAvailability,"FALSE");
  65. }

  66. /////////////////////////////////////////////////
  67. //////////Input Details for ACTION dvds//////////
  68. /////////////////////////////////////////////////

  69. printf("Enter id number for a ACTION dvd: ");
  70. gets(ACTION[0].idno);
  71. printf("Enter title for a ACTION dvd: ");
  72. gets(ACTION[0].dvdTitle);
  73. printf("Enter duration for a ACTION dvd in hours: ");
  74. scanf("%d",&ACTION[0].dvdDurationInHours);
  75. printf("Enter duration for a ACTION dvd in minutes: ");
  76. scanf("%d",&ACTION[0].dvdDurationInMinutes);
  77. printf("Enter classification for a ACTION dvd: ");
  78. gets(ACTION[0].dvdClassification);
  79. printf("Enter availability for a ACTION dvd: \n");
  80. printf("Enter T for TRUE or enter F for FALSE: ");
  81. scanf("%c",&availability);
  82. if (availability=='T'||availability=='t')
  83. {
  84. strcpy(ACTION[0].dvdAvailability,"TRUE");
  85. }
  86. else
  87. {
  88. strcpy(ACTION[0].dvdAvailability,"FALSE");
  89. }

  90. //////////////////////////////////////
  91. ////Print out HORROR dvd details//////
  92. //////////////////////////////////////
  93. printf("============================\n");
  94. printf("HORROR dvd details\n");
  95. printf("============================\n");
  96. printf("ID number for HORROR dvd: %s",HORROR[0].idno);
  97. printf("Title for HORROR dvd: %s",HORROR[0].dvdTitle);
  98. printf("Duration for HORROR dvd in hours: %d",HORROR[0].dvdDurationInHours);
  99. printf("Duration for HORROR dvd in minutes: %d",HORROR[0].dvdDurationInMinutes);
  100. printf("Classification for HORROR dvd: %s",HORROR[0].dvdClassification);
  101. printf("Availability for HORROR dvd: %s",HORROR[0].dvdAvailability);

  102. //////////////////////////////////////
  103. ////Print out COMEDY dvd details//////
  104. //////////////////////////////////////
  105. printf("============================\n");
  106. printf("COMEDY dvd details\n");
  107. printf("============================\n");
  108. printf("ID number for COMEDY dvd: %s",COMEDY[0].idno);
  109. printf("Title for COMEDY dvd: %s",COMEDY[0].dvdTitle);
  110. printf("Duration for COMEDY dvd in hours: %d",COMEDY[0].dvdDurationInHours);
  111. printf("Duration for COMEDY dvd in minutes: %d",COMEDY[0].dvdDurationInMinutes);
  112. printf("Classification for COMEDY dvd: %s",COMEDY[0].dvdClassification);
  113. printf("Availability for COMEDY dvd: %s",COMEDY[0].dvdAvailability);

  114. //////////////////////////////////////
  115. ////Print out ACTION dvd details//////
  116. //////////////////////////////////////
  117. printf("============================\n");
  118. printf("ACTION dvd details\n");
  119. printf("============================\n");
  120. printf("ID number for ACTION dvd: %s",ACTION[0].idno);
  121. printf("Title for ACTION dvd: %s",ACTION[0].dvdTitle);
  122. printf("Duration for ACTION dvd in hours: %d",ACTION[0].dvdDurationInHours);
  123. printf("Duration for ACTION dvd in minutes: %d",ACTION[0].dvdDurationInMinutes);
  124. printf("Classification for ACTION dvd: %s",ACTION[0].dvdClassification);
  125. printf("Availability for ACTION dvd: %s",ACTION[0].dvdAvailability);

  126. return 0;
  127. }
复制代码


output不对耶~
看不出code有什么问题。。。
output如下:
  Enter id number for a HORROR dvd: 123abc
  Enter title for a HORROR dvd:  Spiderman
  Enter duration for a HORROR dvd in hours:  3
  Enter duration for a HORROR dvd in minutes:  15
  Enter classification for a HORROR dvd:    Enter availability for a HORROR dvd:
  Enter T for TRUE or enter F for FALSE:   
回复

使用道具 举报

Follow Us
发表于 16-10-2008 06:51 PM | 显示全部楼层
classification 被 skip 掉了
應該是 input buffer 的問題
參考: http://www.gidnetwork.com/b-60.html
回复

使用道具 举报

发表于 16-10-2008 08:33 PM | 显示全部楼层
just add this: getchar(); after each scanf to remove the enter key feed.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 18-10-2008 03:22 PM | 显示全部楼层
原帖由 solidx 于 16-10-2008 08:33 PM 发表
just add this: getchar(); after each scanf to remove the enter key feed.


这解决了dvdClassification的问题
可是问题又接着来了。。。


  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char availability;
  6. struct dvd_details
  7. {
  8.   char idno[20];
  9.   char dvdTitle[50];
  10.   int dvdDurationInHours;
  11.   int dvdDurationInMinutes;
  12.   char dvdClassification[10];
  13.   char dvdAvailability[10];
  14.   
  15. };
  16. struct dvd_details HORROR[100];
  17. struct dvd_details COMEDY[100];
  18. struct dvd_details ACTION[100];

  19. /////////////////////////////////////////////////
  20. //////////Input Details for HORROR dvds//////////
  21. /////////////////////////////////////////////////
  22.   printf("Enter id number for a HORROR dvd: ");
  23.   gets(HORROR[0].idno);
  24.   printf("Enter title for a HORROR dvd: ");
  25.   gets(HORROR[0].dvdTitle);
  26.   printf("Enter duration for a HORROR dvd in hours: ");
  27.   scanf("%d",&HORROR[0].dvdDurationInHours);
  28.   printf("Enter duration for a HORROR dvd in minutes: ");
  29.   scanf("%d",&HORROR[0].dvdDurationInMinutes);
  30.   printf("Enter classification for a HORROR dvd: ");
  31.   gets(HORROR[0].dvdClassification);
  32.   getchar();
  33.   printf("Enter availability for a HORROR dvd (T for TRUE or F for FALSE):\n");
  34.   scanf("%c",&availability);
  35.   if (availability=='T'||availability=='t')
  36.   {
  37.    strcpy(HORROR[0].dvdAvailability,"TRUE");
  38.   }
  39.   else
  40.   {
  41.    strcpy(HORROR[0].dvdAvailability,"FALSE");
  42.   }
  43. /////////////////////////////////////////////////
  44. //////////Input Details for COMEDY dvds//////////
  45. /////////////////////////////////////////////////
  46. printf("Enter id number for a COMEDY dvd: ");
  47. gets(COMEDY[0].idno);
  48. printf("Enter title for a COMEDY dvd: ");
  49. gets(COMEDY[0].dvdTitle);
  50. printf("Enter duration for a COMEDY dvd in hours: ");
  51. scanf("%d",&COMEDY[0].dvdDurationInHours);
  52. printf("Enter duration for a COMEDY dvd in minutes: ");
  53. scanf("%d",&COMEDY[0].dvdDurationInMinutes);
  54. printf("Enter classification for a COMEDY dvd: ");
  55. gets(COMEDY[0].dvdClassification);
  56. getchar();
  57. printf("Enter availability for a COMEDY dvd (T for TRUE or F for FALSE):\n");
  58. scanf("%c",&availability);
  59. // getchar();
  60. if (availability=='T'||availability=='t')
  61. {
  62.   strcpy(COMEDY[0].dvdAvailability,"TRUE");
  63. }
  64. else
  65. {
  66.   strcpy(COMEDY[0].dvdAvailability,"FALSE");
  67. }
  68. /////////////////////////////////////////////////
  69. //////////Input Details for ACTION dvds//////////
  70. /////////////////////////////////////////////////
  71. printf("Enter id number for a ACTION dvd: ");
  72. gets(ACTION[0].idno);
  73. printf("Enter title for a ACTION dvd: ");
  74. gets(ACTION[0].dvdTitle);
  75. printf("Enter duration for a ACTION dvd in hours: ");
  76. scanf("%d",&ACTION[0].dvdDurationInHours);
  77. printf("Enter duration for a ACTION dvd in minutes: ");
  78. scanf("%d",&ACTION[0].dvdDurationInMinutes);
  79. printf("Enter classification for a ACTION dvd: ");
  80. gets(ACTION[0].dvdClassification);
  81. getchar();
  82. printf("Enter availability for a ACTION dvd (T for TRUE or F for FALSE):\n");
  83. scanf("%c",&availability);
  84. if (availability=='T'||availability=='t')
  85. {
  86.   strcpy(ACTION[0].dvdAvailability,"TRUE");
  87. }
  88. else
  89. {
  90.   strcpy(ACTION[0].dvdAvailability,"FALSE");
  91. }
  92. //////////////////////////////////////
  93. ////Print out HORROR dvd details//////
  94. //////////////////////////////////////
  95. printf("============================\n");
  96. printf("HORROR dvd details\n");
  97. printf("============================\n");
  98. printf("ID number for HORROR dvd: %s",HORROR[0].idno);
  99. printf("Title for HORROR dvd: %s",HORROR[0].dvdTitle);
  100. printf("Duration for HORROR dvd in hours: %d",HORROR[0].dvdDurationInHours);
  101. printf("Duration for HORROR dvd in minutes: %d",HORROR[0].dvdDurationInMinutes);
  102. printf("Classification for HORROR dvd: %s",HORROR[0].dvdClassification);
  103. printf("Availability for HORROR dvd: %s",HORROR[0].dvdAvailability);
  104. //////////////////////////////////////
  105. ////Print out COMEDY dvd details//////
  106. //////////////////////////////////////
  107. printf("============================\n");
  108. printf("COMEDY dvd details\n");
  109. printf("============================\n");
  110. printf("ID number for COMEDY dvd: %s",COMEDY[0].idno);
  111. printf("Title for COMEDY dvd: %s",COMEDY[0].dvdTitle);
  112. printf("Duration for COMEDY dvd in hours: %d",COMEDY[0].dvdDurationInHours);
  113. printf("Duration for COMEDY dvd in minutes: %d",COMEDY[0].dvdDurationInMinutes);
  114. printf("Classification for COMEDY dvd: %s",COMEDY[0].dvdClassification);
  115. printf("Availability for COMEDY dvd: %s",COMEDY[0].dvdAvailability);
  116. //////////////////////////////////////
  117. ////Print out ACTION dvd details//////
  118. //////////////////////////////////////
  119. printf("============================\n");
  120. printf("ACTION dvd details\n");
  121. printf("============================\n");
  122. printf("ID number for ACTION dvd: %s",ACTION[0].idno);
  123. printf("Title for ACTION dvd: %s",ACTION[0].dvdTitle);
  124. printf("Duration for ACTION dvd in hours: %d",ACTION[0].dvdDurationInHours);
  125. printf("Duration for ACTION dvd in minutes: %d",ACTION[0].dvdDurationInMinutes);
  126. printf("Classification for ACTION dvd: %s",ACTION[0].dvdClassification);
  127. printf("Availability for ACTION dvd: %s",ACTION[0].dvdAvailability);
  128. return 0;
  129. }



复制代码


Enter id number for a HORROR dvd: abc123
Enter title for a HORROR dvd: Spiderman
Enter duration for a HORROR dvd in hours: 2
Enter duration for a HORROR dvd in minutes: 15
Enter classification for a HORROR dvd: PG18
Enter availability for a ACTION dvd (T for TRUE or F for FALSE): Enter id number for a COMEDY dvd:Enter title for a COMEDY dvd: _


请问这是怎么一回事呢?
回复

使用道具 举报

发表于 18-10-2008 03:34 PM | 显示全部楼层
input buffer的問題..
建議自己另外寫讀取value然後clear buffer的function
例如
char readChar() {
   char c = ' ';
   scanf("%c", &c);
   while(getchar() != '\n');
   return c;
}
回复

使用道具 举报

 楼主| 发表于 18-10-2008 03:50 PM | 显示全部楼层
原帖由 cheng1986 于 18-10-2008 03:34 PM 发表
input buffer的問題..
建議自己另外寫讀取value然後clear buffer的function
例如
char readChar() {
   char c = ' ';
   scanf("%c", &c);
   while(getchar() != '\n');
   return c;
}


啊?
不明白
这段code该放在哪里啊?
回复

使用道具 举报

发表于 18-10-2008 03:58 PM | 显示全部楼层
  1. printf("Enter id number for a HORROR dvd: ");
  2.   strcpy(HORROR[0].idno, readStr());
  3.   printf("Enter title for a HORROR dvd: ");
  4.   strcpy(HORROR[0].dvdTitle, readStr());
  5.   printf("Enter duration for a HORROR dvd in hours: ");
  6.   HORROR[0].dvdDurationInHours = readInt();
  7.   printf("Enter duration for a HORROR dvd in minutes: ");
  8.   HORROR[0].dvdDurationInMinutes = readInt();
  9.   printf("Enter classification for a HORROR dvd: ");
  10.   strcpy(HORROR[0].dvdClassification, readStr());
  11.   printf("Enter availability for a HORROR dvd (T for TRUE or F for FALSE):\n");
  12.   availability = readChar();
复制代码
readInt(), readStr() 自己寫...
回复

使用道具 举报

 楼主| 发表于 19-10-2008 04:08 PM | 显示全部楼层

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

  3. char readStr()
  4. {
  5. char c[] = {' '};
  6. scanf("%s", &c);
  7. while(getchar() != '\n');
  8. return c;
  9. }

  10. char readChar()
  11. {
  12. char c = ' ';
  13. scanf("%c", &c);
  14. while(getchar() != '\n');
  15. return c;
  16. }

  17. int readInt() {
  18. int c = ' ';
  19. scanf("%d", &c);
  20. while(getchar() != '\n');
  21. return c;
  22. }

  23. int main()
  24. {
  25. char availability;
  26. struct dvd_details
  27. {
  28. char idno[20];
  29. char dvdTitle[50];
  30. int dvdDurationInHours;
  31. int dvdDurationInMinutes;
  32. char dvdClassification[10];
  33. char dvdAvailability[10];

  34. };

  35. struct dvd_details HORROR[100];
  36. struct dvd_details COMEDY[100];
  37. struct dvd_details ACTION[100];


  38. /////////////////////////////////////////////////
  39. //////////Input Details for HORROR dvds//////////
  40. /////////////////////////////////////////////////



  41. printf("Enter id number for a HORROR dvd: ");
  42. strcpy(HORROR[0].idno, readStr());
  43. //gets(HORROR[0].idno);
  44. printf("Enter title for a HORROR dvd: ");
  45. strcpy(HORROR[0].dvdTitle, readStr());
  46. //gets(HORROR[0].dvdTitle);
  47. printf("Enter duration for a HORROR dvd in hours: ");
  48. HORROR[0].dvdDurationInHours = readInt();
  49. //scanf("%d",&HORROR[0].dvdDurationInHours);
  50. printf("Enter duration for a HORROR dvd in minutes: ");
  51. HORROR[0].dvdDurationInMinutes = readInt();
  52. //scanf("%d",&HORROR[0].dvdDurationInMinutes);
  53. printf("Enter classification for a HORROR dvd: ");
  54. strcpy(HORROR[0].dvdClassification, readStr());
  55. //gets(HORROR[0].dvdClassification);
  56. printf("Enter availability for a HORROR dvd (T for TRUE or F for FALSE):\n");
  57. availability = readChar();
  58. //scanf("%c",&availability);
  59. if (availability=='T'||availability=='t')
  60. {
  61. strcpy(HORROR[0].dvdAvailability,"TRUE");
  62. }
  63. else
  64. {
  65. strcpy(HORROR[0].dvdAvailability,"FALSE");
  66. }

  67. /////////////////////////////////////////////////
  68. //////////Input Details for COMEDY dvds//////////
  69. /////////////////////////////////////////////////

  70. printf("Enter id number for a COMEDY dvd: ");
  71. gets(COMEDY[0].idno);
  72. printf("Enter title for a COMEDY dvd: ");
  73. gets(COMEDY[0].dvdTitle);
  74. printf("Enter duration for a COMEDY dvd in hours: ");
  75. scanf("%d",&COMEDY[0].dvdDurationInHours);
  76. printf("Enter duration for a COMEDY dvd in minutes: ");
  77. scanf("%d",&COMEDY[0].dvdDurationInMinutes);
  78. printf("Enter classification for a COMEDY dvd: ");
  79. gets(COMEDY[0].dvdClassification);
  80. getchar();
  81. printf("Enter availability for a COMEDY dvd: \n");
  82. printf("Enter T for TRUE or enter F for FALSE: ");
  83. scanf("%c",&availability);
  84. // getchar();
  85. if (availability=='T'||availability=='t')
  86. {
  87. strcpy(COMEDY[0].dvdAvailability,"TRUE");
  88. }
  89. else
  90. {
  91. strcpy(COMEDY[0].dvdAvailability,"FALSE");
  92. }

  93. /////////////////////////////////////////////////
  94. //////////Input Details for ACTION dvds//////////
  95. /////////////////////////////////////////////////

  96. printf("Enter id number for a ACTION dvd: ");
  97. gets(ACTION[0].idno);
  98. printf("Enter title for a ACTION dvd: ");
  99. gets(ACTION[0].dvdTitle);
  100. printf("Enter duration for a ACTION dvd in hours: ");
  101. scanf("%d",&ACTION[0].dvdDurationInHours);
  102. printf("Enter duration for a ACTION dvd in minutes: ");
  103. scanf("%d",&ACTION[0].dvdDurationInMinutes);
  104. printf("Enter classification for a ACTION dvd: ");
  105. gets(ACTION[0].dvdClassification);
  106. getchar();
  107. printf("Enter availability for a ACTION dvd: \n");
  108. printf("Enter T for TRUE or enter F for FALSE: ");
  109. scanf("%c",&availability);
  110. if (availability=='T'||availability=='t')
  111. {
  112. strcpy(ACTION[0].dvdAvailability,"TRUE");
  113. }
  114. else
  115. {
  116. strcpy(ACTION[0].dvdAvailability,"FALSE");
  117. }

  118. //////////////////////////////////////
  119. ////Print out HORROR dvd details//////
  120. //////////////////////////////////////
  121. printf("============================\n");
  122. printf("HORROR dvd details\n");
  123. printf("============================\n");
  124. printf("ID number for HORROR dvd: %s",HORROR[0].idno);
  125. printf("Title for HORROR dvd: %s",HORROR[0].dvdTitle);
  126. printf("Duration for HORROR dvd in hours: %d",HORROR[0].dvdDurationInHours);
  127. printf("Duration for HORROR dvd in minutes: %d",HORROR[0].dvdDurationInMinutes);
  128. printf("Classification for HORROR dvd: %s",HORROR[0].dvdClassification);
  129. printf("Availability for HORROR dvd: %s",HORROR[0].dvdAvailability);

  130. //////////////////////////////////////
  131. ////Print out COMEDY dvd details//////
  132. //////////////////////////////////////
  133. printf("============================\n");
  134. printf("COMEDY dvd details\n");
  135. printf("============================\n");
  136. printf("ID number for COMEDY dvd: %s",COMEDY[0].idno);
  137. printf("Title for COMEDY dvd: %s",COMEDY[0].dvdTitle);
  138. printf("Duration for COMEDY dvd in hours: %d",COMEDY[0].dvdDurationInHours);
  139. printf("Duration for COMEDY dvd in minutes: %d",COMEDY[0].dvdDurationInMinutes);
  140. printf("Classification for COMEDY dvd: %s",COMEDY[0].dvdClassification);
  141. printf("Availability for COMEDY dvd: %s",COMEDY[0].dvdAvailability);

  142. //////////////////////////////////////
  143. ////Print out ACTION dvd details//////
  144. //////////////////////////////////////
  145. printf("============================\n");
  146. printf("ACTION dvd details\n");
  147. printf("============================\n");
  148. printf("ID number for ACTION dvd: %s",ACTION[0].idno);
  149. printf("Title for ACTION dvd: %s",ACTION[0].dvdTitle);
  150. printf("Duration for ACTION dvd in hours: %d",ACTION[0].dvdDurationInHours);
  151. printf("Duration for ACTION dvd in minutes: %d",ACTION[0].dvdDurationInMinutes);
  152. printf("Classification for ACTION dvd: %s",ACTION[0].dvdClassification);
  153. printf("Availability for ACTION dvd: %s",ACTION[0].dvdAvailability);

  154. return 0;
  155. }
复制代码


我硬着头皮试着做了
可是。。。。


warning C4047: 'return' : 'char ' differs in levels of indirection from 'char [1]'
warning C4172: returning address of local variable or temporary
warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
warning C4024: 'strcpy' : different types for formal and actual parameter 2
warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
warning C4024: 'strcpy' : different types for formal and actual parameter 2
warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
warning C4024: 'strcpy' : different types for formal and actual parameter 2
回复

使用道具 举报

发表于 19-10-2008 05:37 PM | 显示全部楼层
改了readStr...
  1. #include<stdio.h>
  2. #include<string.h>

  3. void readStr(char *str){
  4.         int i;
  5.         char c;
  6.         for(i = 0; (c = getchar()) != '\n'; i++)
  7.                 str[i] = c;
  8.         str[i] = '\0';
  9. }

  10. char readChar()
  11. {
  12. char c = ' ';
  13. scanf("%c", &c);
  14. while(getchar() != '\n');
  15. return c;
  16. }

  17. int readInt() {
  18. int c = ' ';
  19. scanf("%d", &c);
  20. while(getchar() != '\n');
  21. return c;
  22. }

  23. int main()
  24. {
  25. char availability;
  26. struct dvd_details
  27. {
  28. char idno[20];
  29. char dvdTitle[50];
  30. int dvdDurationInHours;
  31. int dvdDurationInMinutes;
  32. char dvdClassification[10];
  33. char dvdAvailability[10];

  34. };

  35. struct dvd_details HORROR[100];
  36. struct dvd_details COMEDY[100];
  37. struct dvd_details ACTION[100];


  38. /////////////////////////////////////////////////
  39. //////////Input Details for HORROR dvds//////////
  40. /////////////////////////////////////////////////



  41. printf("Enter id number for a HORROR dvd: ");
  42. readStr(HORROR[0].idno);
  43. //gets(HORROR[0].idno);
  44. printf("Enter title for a HORROR dvd: ");
  45. readStr(HORROR[0].dvdTitle);
  46. //gets(HORROR[0].dvdTitle);
  47. printf("Enter duration for a HORROR dvd in hours: ");
  48. HORROR[0].dvdDurationInHours = readInt();
  49. //scanf("%d",&HORROR[0].dvdDurationInHours);
  50. printf("Enter duration for a HORROR dvd in minutes: ");
  51. HORROR[0].dvdDurationInMinutes = readInt();
  52. //scanf("%d",&HORROR[0].dvdDurationInMinutes);
  53. printf("Enter classification for a HORROR dvd: ");
  54. readStr(HORROR[0].dvdClassification);
  55. //gets(HORROR[0].dvdClassification);
  56. printf("Enter availability for a HORROR dvd (T for TRUE or F for FALSE):");
  57. availability = readChar();
  58. //scanf("%c",&availability);
  59. if (availability=='T'||availability=='t')
  60. {
  61. strcpy(HORROR[0].dvdAvailability,"TRUE");
  62. }
  63. else
  64. {
  65. strcpy(HORROR[0].dvdAvailability,"FALSE");
  66. }

  67. /////////////////////////////////////////////////
  68. //////////Input Details for COMEDY dvds//////////
  69. /////////////////////////////////////////////////

  70. printf("Enter id number for a COMEDY dvd: ");
  71. readStr(COMEDY[0].idno);
  72. printf("Enter title for a COMEDY dvd: ");
  73. readStr(COMEDY[0].dvdTitle);
  74. printf("Enter duration for a COMEDY dvd in hours: ");
  75. COMEDY[0].dvdDurationInHours = readInt();
  76. printf("Enter duration for a COMEDY dvd in minutes: ");
  77. COMEDY[0].dvdDurationInMinutes = readInt();
  78. printf("Enter classification for a COMEDY dvd: ");
  79. readStr(COMEDY[0].dvdClassification);
  80. printf("Enter availability for a COMEDY dvd: \n");
  81. printf("Enter T for TRUE or enter F for FALSE: ");
  82. availability = readChar();
  83. if (availability=='T'||availability=='t')
  84. {
  85. strcpy(COMEDY[0].dvdAvailability,"TRUE");
  86. }
  87. else
  88. {
  89. strcpy(COMEDY[0].dvdAvailability,"FALSE");
  90. }

  91. /////////////////////////////////////////////////
  92. //////////Input Details for ACTION dvds//////////
  93. /////////////////////////////////////////////////

  94. printf("Enter id number for a ACTION dvd: ");
  95. readStr(ACTION[0].idno);
  96. printf("Enter title for a ACTION dvd: ");
  97. readStr(ACTION[0].dvdTitle);
  98. printf("Enter duration for a ACTION dvd in hours: ");
  99. ACTION[0].dvdDurationInHours = readInt();
  100. printf("Enter duration for a ACTION dvd in minutes: ");
  101. ACTION[0].dvdDurationInMinutes = readInt();
  102. printf("Enter classification for a ACTION dvd: ");
  103. readStr(ACTION[0].dvdClassification);
  104. printf("Enter availability for a ACTION dvd: \n");
  105. printf("Enter T for TRUE or enter F for FALSE: ");
  106. availability = readChar();
  107. if (availability=='T'||availability=='t')
  108. {
  109. strcpy(ACTION[0].dvdAvailability,"TRUE");
  110. }
  111. else
  112. {
  113. strcpy(ACTION[0].dvdAvailability,"FALSE");
  114. }

  115. //////////////////////////////////////
  116. ////Print out HORROR dvd details//////
  117. //////////////////////////////////////
  118. printf("============================\n");
  119. printf("HORROR dvd details\n");
  120. printf("============================\n");
  121. printf("ID number for HORROR dvd: %s",HORROR[0].idno);
  122. printf("Title for HORROR dvd: %s",HORROR[0].dvdTitle);
  123. printf("Duration for HORROR dvd in hours: %d",HORROR[0].dvdDurationInHours);
  124. printf("Duration for HORROR dvd in minutes: %d",HORROR[0].dvdDurationInMinutes);
  125. printf("Classification for HORROR dvd: %s",HORROR[0].dvdClassification);
  126. printf("Availability for HORROR dvd: %s",HORROR[0].dvdAvailability);

  127. //////////////////////////////////////
  128. ////Print out COMEDY dvd details//////
  129. //////////////////////////////////////
  130. printf("============================\n");
  131. printf("COMEDY dvd details\n");
  132. printf("============================\n");
  133. printf("ID number for COMEDY dvd: %s",COMEDY[0].idno);
  134. printf("Title for COMEDY dvd: %s",COMEDY[0].dvdTitle);
  135. printf("Duration for COMEDY dvd in hours: %d",COMEDY[0].dvdDurationInHours);
  136. printf("Duration for COMEDY dvd in minutes: %d",COMEDY[0].dvdDurationInMinutes);
  137. printf("Classification for COMEDY dvd: %s",COMEDY[0].dvdClassification);
  138. printf("Availability for COMEDY dvd: %s",COMEDY[0].dvdAvailability);

  139. //////////////////////////////////////
  140. ////Print out ACTION dvd details//////
  141. //////////////////////////////////////
  142. printf("============================\n");
  143. printf("ACTION dvd details\n");
  144. printf("============================\n");
  145. printf("ID number for ACTION dvd: %s",ACTION[0].idno);
  146. printf("Title for ACTION dvd: %s",ACTION[0].dvdTitle);
  147. printf("Duration for ACTION dvd in hours: %d",ACTION[0].dvdDurationInHours);
  148. printf("Duration for ACTION dvd in minutes: %d",ACTION[0].dvdDurationInMinutes);
  149. printf("Classification for ACTION dvd: %s",ACTION[0].dvdClassification);
  150. printf("Availability for ACTION dvd: %s",ACTION[0].dvdAvailability);

  151. return 0;
  152. }
复制代码
  1. Enter id number for a HORROR dvd: 1
  2. Enter title for a HORROR dvd: Scary Movie
  3. Enter duration for a HORROR dvd in hours: 1
  4. Enter duration for a HORROR dvd in minutes: 30
  5. Enter classification for a HORROR dvd: 18pg
  6. Enter availability for a HORROR dvd (T for TRUE or F for FALSE):
  7. t
  8. Enter id number for a COMEDY dvd: 2
  9. Enter title for a COMEDY dvd: Scary Movie 2
  10. Enter duration for a COMEDY dvd in hours: 2
  11. Enter duration for a COMEDY dvd in minutes: 45
  12. Enter classification for a COMEDY dvd: PG
  13. Enter availability for a COMEDY dvd:
  14. Enter T for TRUE or enter F for FALSE: t
  15. Enter id number for a ACTION dvd: 3
  16. Enter title for a ACTION dvd: Leon the professional
  17. Enter duration for a ACTION dvd in hours: 2
  18. Enter duration for a ACTION dvd in minutes: 50
  19. Enter classification for a ACTION dvd: 18sg
  20. Enter availability for a ACTION dvd:
  21. Enter T for TRUE or enter F for FALSE: t
  22. ============================
  23. HORROR dvd details
  24. ============================
  25. ID number for HORROR dvd: 1Title for HORROR dvd: Scary MovieDuration for HORROR
  26. dvd in hours: 1Duration for HORROR dvd in minutes: 30Classification for HORROR d
  27. vd: 18pgAvailability for HORROR dvd: TRUE============================
  28. COMEDY dvd details
  29. ============================
  30. ID number for COMEDY dvd: 2Title for COMEDY dvd: Scary Movie 2Duration for COMED
  31. Y dvd in hours: 2Duration for COMEDY dvd in minutes: 45Classification for COMEDY
  32. dvd: PGAvailability for COMEDY dvd: TRUE============================
  33. ACTION dvd details
  34. ============================
  35. ID number for ACTION dvd: 3Title for ACTION dvd: Leon the professionalDuration f
  36. or ACTION dvd in hours: 2Duration for ACTION dvd in minutes: 50Classification fo
  37. r ACTION dvd: 18sgAvailability for ACTION dvd: TRUEPress any key to continue . .
复制代码
回复

使用道具 举报

 楼主| 发表于 19-10-2008 06:38 PM | 显示全部楼层
原帖由 cheng1986 于 19-10-2008 05:37 PM 发表
改了readStr...#include
#include

void readStr(char *str){
        int i;
        char c;
        for(i = 0; (c = getchar()) != '\n'; i++)
                str = c;
        str = '\0';
}

char readChar()
{
char c = ' ';
scanf("%c ...


prefect
佩服ing~
先拿走了。。。
等下再研究。。。
不明白再上来请教阁下
谢谢~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 22-12-2025 04:15 PM , Processed in 0.134358 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表