【发布时间】:2023-04-07 09:53:02
【问题描述】:
我在大学的前半年对 C 语言非常陌生。这是我在 StackOverflow 上的第一个问题。
我的任务是对其进行编程,以便将存储在数字中的每个字符串转换为十进制,而无需更改主函数之外的任何内容。
我现在正在尝试过去 4 个小时来解决这个问题,我想根据与长度相比的位置来迭代我当前到的字符串中的每个字符,以将其转换为小数。
我唯一的问题是有人帮助我了解如何在不使用 strlen() 的情况下获取字符串长度,因为我无法添加 #include <string.h>
这是我到目前为止得到的(获取数组的长度以遍历每个索引):
#include <stdio.h>
#include <math.h> // Kompilieren mit -lm : gcc -Wall -std=c11 dateiname.c -lm
int main() {
char* numbers[] = {
"01001001",
"00101010",
"010100111001",
"011111110100101010010111",
"0001010110011010101111101111010101110110",
"01011100110000001101"};
// Add here..
int length = sizeof(numbers);
for ( int i = 0; i < length; i++ ){
//how do i get the string size without strlen() D:
}
return 0;
}
【问题讨论】:
-
您了解
strlen的工作原理,或者一般来说,是什么决定了C 中字符串的长度吗? -
我想我知道 strlen() 是如何工作的,但在这种情况下我不能用它来确定当前字符串的实际大小
-
注意:
strlen()的签名是size_t strlen(const char *s);,但不需要strlen()来停止for循环。只需查找 null 字符。 -
sizeof返回保存其参数所需的字节数,这不是您想要的length