【发布时间】:2021-07-10 00:44:10
【问题描述】:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS
int main(void){
//declare 3 char arrays to hold 3 strings of 20 characters each.
char string1[51];
char string2[51];
char string3[51];
// Prompt the user to enter string 1.
printf("Input String 1 : ");
/* Use the gets() function to input the string user enters into string1*/
fgets(string1, sizeof(string1), stdin);
// Prompt the user to enter string 2.
printf("Input String 2 : ");
/* Use the gets() function to input the string user enters into string2*/
fgets(string2, sizeof(string2), stdin);
//Perform the strcpy() operation on string3 from string 1.
//char *strcpy(char *string3, const char *string1);
//strcpy_s(string3, string1, sizeof(string3) - 1);
memcpy(string3, string1, 51);
//print string 3
printf("String3: ");
printf("%s",string3);
//Use the strlen() function on string 2
int len;
len = strlen(string2);
//print the output.
printf("String 2 length: ");
printf("%d \n",len);
//Use the strcmp function to compare string and string 2.
int results;
strcmp(string1, string2);
results = strcmp(string1, string2);
//print the result
if (results < 0) {
printf("str1 is less than str2\n");
}
else if (results > 0) {
printf("str2 is less than str1\n");
}
else {
printf("str1 is equal to str2\n");
}
//Convert characters in string 1 to uppercase using the toupper()
int i = 0;
int j = 0;
char chr;
for (i = 0; string1[i]; i++)
{
chr = string1[i];
printf("%c", toupper(chr));
}
/*Convert all the characters in string 2 to uppercase using the tolower()
function on every character using a for loop.*/
for (j = 0; string2[i]; j++)
{
chr = string2[i];
printf("%c", tolower(chr));
}
return 0;
}
我正在尝试将 string1 复制到 string3,但是当我使用 strcpy() 或 strcpy_s() 时会引发错误。如果我从程序中完全删除strcpy(),它将运行。
我为每个字符串输入了 50 个字符,那么它们是否需要为 51 因为 null?
我已经更新了我的代码。输入大写字母时,我无法让 tolower() 以小写形式显示 string2。
请告知我有关更改以及需要进行更改的原因。
错误:错误 C4996 'strcpy':此函数或变量可能不安全。
考虑改用 strcpy_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS
【问题讨论】:
-
它会抛出一个错误。请显示确切的错误。事实上,请显示整个运行日志,包括准确的输入、输出和产生的错误。
-
错误 C4996 'strcpy':此函数或变量可能不安全。考虑改用 strcpy_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。
-
请Edit 使用该信息更新帖子。
-
错误消息非常清楚地告诉您它希望您做什么:考虑改用 strcpy_s 或 使用 _CRT_SECURE_NO_WARNINGS。它会告诉你原因:函数或变量可能不安全。哪一部分你不明白?
-
for (i = 0; i <= string1[i]; i++)很奇怪。也许for (i = 0; string1[i]; i++)?