Đây là 1 đoạn code tìm ra từ dài nhất trong xâu của 1 mod đã cho em. Cho em hỏi dòng str += i
(Dòng em cmt ??? ấy ạ) có phải là nhảy i
ô nhớ rồi gán cho mảng str
bắt dầu từ ô nhờ vừa nhảy đến không ạ?
Theo như em biết thì đã là mảng hằng (const char
) thì ko thay đổi bất kì thứ tự hay giá trị nào đó trong mảng mà sao trong trường hợp này lại đc ạ.
#include <stdio.h>
#include <ctype.h>
void longest_sub_string(const char *str) {
const char *s = str;
char len = 0;
while (*str) {
while (!isalnum(*str)) ++str; // step over space
int i = 0;
while ( isalnum(str[i])) ++i;// last i = lenght of current word
if (i > len) {//i vs lenght of the longest word
s = str;
len = i;
}
str += i;//????
}
// print
for (const char *c = s; c < s + len; ++c) putchar(*c);
puts("\n");
}
int main() {
char s[1000];
fgets(s, 999, stdin);
longest_sub_string(s);
}
Mấy hôm trước em không để ý lắm nhưng khi em chạy đoạn code bên dưới thì phát hiện ra em hiểu sai cái gì đó và cái lệnh str += i
không hợp lệ trong program em chạy thử:
#include <stdio.h>
int main(){
char arr[]={"Hello world!"};
arr += 3;
puts(arr);
return 0;
}
nó báo lỗi là :
6 6 C:\Users\hp\Desktop\Cprograming\test\string.c [Error] invalid operands to binary + (have 'char[13]' and 'int')
Mong các anh giúp đỡ ạ.