Đâ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 đỡ ạ.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?