int max(char a[]){
int i,j,k;char t[100];
j=0;k=0;
for(i=0;a[i]!='\0';i++){
if(((a[i]>='a')&&(a[i]<='z'))||((a[i]>='A')&&(a[i]<='Z'))){
j+=1;
}
if((a[i]' ')||(a[i]'.')||(a[i]=',')){
if(j>k){
k=j;
for(j=0;j<k;j++){
t[j]=a[i-k+j+1];
}
}
j=0;
}
}
for(i=0;t[i]!='\0';i++){
printf("%c\n",t[i]);
}
return 0;
}
int mian()
{
char b[100];
gets(b);
max(b);
return 0;
}
结果总是返回 [Error] ld returned 1 exit status,请问是什么问题?
原题 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数
代码中有错误,是编译不了吧
如果按照你这个思路,参考如下的修订的代码
int max(char a[]) {
int i, j, lastWordStart;
char t[100];
j = 0;
lastWordStart = 0;
for (i = 0; i <= strlen(a); i++) {
//if (((a[i] >= 'a') && (a[i] <= 'z')) || ((a[i] >= 'A') && (a[i] <= 'Z'))) {
if (isalpha(a[i])) {
j += 1;
}
//if ( (0==a[i]) || (' ' == a[i]) || ('.'==a[i] ) || ',' == a[i] || ispunct(a[i])) {
if ((0 == a[i]) || isspace(a[i]) || ispunct(a[i])) {
if (j > lastWordStart) {
lastWordStart = j;
int n = 0;
for (n = 0; n < lastWordStart; n++) {
t[n] = a[i - lastWordStart + n];
}
t[n] = 0;
}
j = 0;
}
}
// for (i = 0; t[i] != '\0'; i++) {
// printf("%c\n", t[i]);
// }
printf("%s\n", t);
return 0;
}
int main() {
char b[100] = {0};
gets((char *) b);
max(b);
return 0;
}
请问哪里有问题?