【发布时间】:2021-06-12 01:11:37
【问题描述】:
这是来自codeforces https://codeforces.com/problemset/problem/339/A的问题
这是我卡住的代码。
char full_string[100];
char string[100][1];
for (int i = 0; i < strlen(full_string); i++)
{
for (int j = 0; j < 2; j++)
{
if (j = 0)
{
if (strcmp(string[i][j], string[i + 1][j]) < 0)
{
char temp;
temp = string[i][j];
string[i][j] = string[i + 1][j];
string[i + 1][j] = temp;
}
}
printf("%c", string[i][j]);
}
}
编译器告诉我这个。
" 从 'char' 到 'const char*' 的无效转换"
主要问题在于 strcmp。它说它需要 const char* 但字符串参数是 char。 我是否应该创建一个新的 int 数组来存储数字。然后我将使用 atoi 将字符串转换为整数。所以我可以使用 "if(expression)" 而不是 strcmp。
【问题讨论】:
-
您正在传递一个
char变量,但strcmp()的参数必须是(char*, char*) -
您在哪里写
char string[100][1];,您希望string在内存中看起来像什么 - 您对尺寸有何期望?然后当您执行string[i][j]时,您是希望从中得到一个指针,还是一个字符?如果是指针,为什么?如果是单个字符,您为什么希望它像这样与strcmp一起使用? -
发布的代码不过是一个代码片段。它缺少所需的
#include语句。它缺少一个“main()”函数(事实上它根本没有函数定义)请发布minimal reproducible example,以便我们可以简单地复制您的代码,重现问题 -
关于这种语句:
for (int i = 0; i < strlen(full_string); i++)从strlen()返回的类型是size_t(一个无符号长整型),并且该语句试图将该无符号值与int进行比较是有符号值 -
关于:
for (int j = 0; j < 2; j++) { if (j = 0)因为j总是被赋值为0,结果是一个无限循环