我有一个char数组包含由null分隔的字符串。我有char aarray中存在的字符串的索引。如何使用索引从此char数组中读取字符串,并以null分隔。
e.g。我有以下char数组,
char *buf = ['\0', 'b', 'c', 's', '\0', 'n', 'e', 'w', '\0', 'n', 'x', 't', '\0'];
我有这些字符串的索引,例如 bcs 字符串的索引1 新字符串的索引5 索引9为 nxt 字符串
如何使用此char数组中的索引读取这些字符串?
答案 0 :(得分:1)
很抱歉这个简单的问题,我得到了答案,我们可以从char数组中获取字符串,如下所示: - 获取要获取的字符串的索引地址 - 打印字符串
char* str = &buf[index];
if(str)
printf("string is : %s\n", str);
答案 1 :(得分:1)
更通用的方法是在打印所有字符串之前通过buf
,即不使用索引。
问题是如何识别缓冲区(已使用部分)的结束。一般的技巧是使用额外的空字符终止缓冲区。以下内容证明了这一点:
char buf[] = {'\0', 'b', 'c', 's', '\0', 'n', 'e', 'w', '\0', 'n', 'x', 't', '\0', '\0'};
void f(void)
{
char *s= buf;
do {
if (*s==0) {
if (*(s+1)==0) break;
s++;
}
puts(s);
while (*s) s++;
} while(1);
}
答案 2 :(得分:0)
这是你怎么做的。虽然我没有做任何安全检查,代码只显示如何从字符数组中读取字符串,用null终止符分隔。每当你为数组赋值多个时使用这个括号[]而不是使用花括号{}
#include <stdio.h>
int main(void) {
char buf[] = {'\0', 'b', 'c', 's', '\0', 'n', 'e', 'w', '\0', 'n', 'x', 't', '\0'};
int indx = 0;
printf("Which index to read from:");
scanf("%d", &indx);
for(int i = indx; buf[i] != '\0'; i++){
printf("%c", buf[i]);
}
}