在你点燃火把之前,我正在努力教自己C.我觉得我已经很好地掌握了它,但如果你知道我的意思,我必须深入到底 . 我正在尝试调试一个我想要自学的简单程序 . 该程序的目标是按字母顺序对打印出的每个字符串数组进行排序 . 在将数组传递给我的length()函数时,我可能应该在这里使用指针,但我还没有那么远 . 有很多错误,我不确定错误实际上在哪里 . 请告诉我这是一个缺少分号的东西 . 我很确定if(itemsToSort [j] <firstInAZOrder)行不会工作,但我再次尝试学习语言,我必须从某个地方开始 .
main.cpp中:
#include <iostream>
#include "stringarray.h"
void output (int sortedItems) {
for (int i = 0; ; i++) {
std::cout << sortedItems[i] << std::endl;
}
}
int main (int argc, char * const argv[]) {
std::string itemsToSort[] = {
'bob', 'john', 'tyler', 'anthony', 'luke', 'eric'
};
std::string sortedItems[length(itemsToSort)];
string firstInAZOrder;
for (int i = 0; i < length(itemsToSort); i++) {
firstInAZOrder = itemsToSort[i];
for (int j = i + 1; j < length(itemsToSort); j++) {
if (itemsToSort[j] < firstInAZOrder) {
firstInAZOrder = itemsToSort[j];
}
}
sortedItems[i] = firstInAZOrder;
}
output(sortedItems);
return 0;
}
stringarray.cpp:
int length (std::string array) {
return sizeof(array) / sizeof(array[0]);
}
stringarray.h:
int length (std::string array);
以下是Xcode给我的错误和警告列表:
-
/Users/Tyler/Desktop/sort/main.cpp:12:3:警告:多字符字符常量 -
-
/Users/Tyler/Desktop/sort/main.cpp:12:18:警告:字符常量太长
-
/Users/Tyler/Desktop/sort/main.cpp:12:27:警告:字符常量太长
-
/Users/Tyler/Desktop/sort/main.cpp:在函数_1034408中:
-
/Users/Tyler/Desktop/sort/main.cpp:6:错误:数组下标的类型'int[int]'无效
-
/Users/Tyler/Desktop/sort/main.cpp:在函数_1034410中:
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:无法从'int'转换为'const char*'
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'的参数1
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:无法从'int'转换为'const char*'
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'的参数1
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:无法从'int'转换为'const char*'
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'的参数1
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:无法从'int'转换为'const char*'
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'的参数1
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:无法从'int'转换为'const char*'
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'的参数1
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:无法从'int'转换为'const char*'
-
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'的参数1
-
/Users/Tyler/Desktop/sort/main.cpp:14:错误:从'std::string*'转换为非标量类型'std::string'已请求
-
/Users/Tyler/Desktop/sort/main.cpp:15:错误:'string'未在此范围内声明
-
/Users/Tyler/Desktop/sort/main.cpp:15:错误:预期`; ' before ' firstInAZOrder'
-
/Users/Tyler/Desktop/sort/main.cpp:17:错误:从'std::string*'转换为非标量类型'std::string'已请求
-
/Users/Tyler/Desktop/sort/main.cpp:18:错误:'firstInAZOrder'未在此范围内声明
-
/Users/Tyler/Desktop/sort/main.cpp:20:错误:从'std::string*'转换为非标量类型'std::string'已请求
-
/Users/Tyler/Desktop/sort/main.cpp:26:错误:'sortedItems'未在此范围内声明
-
/Users/Tyler/Desktop/sort/main.cpp:29:错误:'sortedItems'未在此范围内声明
-
/Users/Tyler/Desktop/sort/stringarray.cpp:10:错误:'string'不是'std'的成员
-
/Users/Tyler/Desktop/sort/stringarray.cpp:10:错误:在'{'令牌之前预期','或';'
3 回答
首先:
引号字符(')只能用于单个字符 . 为此使用双引号(“):
下一个:
这个函数只需要一个整数,而这根本不是你想要的 . 假设您想学习如何使用指针,您可以尝试以下方法:
此函数接受指向内存中某些整数的指针,以及那里的数字 . 这解决了下一个知道
for
循环应该何时终止的问题 .在实际代码中,您将使用
std::vector
之类的内容代替int*
.字符串常量应为双引号,而不是单引号:
单引号用于字符常量 .
然后,
应该采用一个数组作为输入,但即便如此,除了通过使它成为一个宏(这是让你从C专家公会被禁止十年的一种可靠方法)或者通过使
length
成为模板函数之后,它将被修复_1034454 . 可能有点先进 . 请改用std::vector
,它有一个size
方法 .最后,
真的没有
int
,是吗?循环中的停止状态也很好,以防止众所周知的龙飞出你的鼻子 .只需一次修复错误 -
首先一个是因为你需要双引号(“)而不是单引号(')
第二个 - 尝试int * sortedItems
只需要一次一个地重复它们,编译完成后,调试器将成为你的朋友