#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 1000
int mygetline( char line[], int maxline); /*will return length */
void copy (char to[], char from[]);
int main(){
int len; // length of the line
int max; // maximum length seen so far
char line[MAXLINE];
char longest[MAXLINE];
max = 0;
while((len = mygetline(line, MAXLINE)) >0){
if (len>max){
max = len;
copy(longest, line);
}
if (max>0){
printf("%s", longest);
}
}
return 0;
}
/*getline: reads a line into s, and returns length of the line */
int mygetline(char s[], int limit){
int c, i;
for(i=0; i<limit-1 && (c=getchar())!= EOF && c!= '\n'; ++i){
s[i] = c;
}
if (c=='\n'){
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
/*copy: copy 'from' into 'to'; assume to is big enough */
void copy (char to[], char from[]){
int i=0;
while((to[i] = from[i] != '\0')){
++i;
}
}
上面说明了我打印最长输入行的代码。代码正在编译而没有任何错误,但是当我运行程序时,它不会打印任何内容。我无法在这里找到问题所在。
答案 0 :(得分:0)
这有点简单,通过使用可用的字符串函数来完成工作,而不是通过char检查char。如果需要,您可以打开文件进行输入并替换stdin
。
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000
int main(){
int len; // length of the line
int max; // maximum length seen so far
char line[MAXLINE];
char longest[MAXLINE];
char *sptr;
max = 0;
while((sptr = fgets(line, MAXLINE, stdin)) != NULL) {
if ((sptr = strtok(sptr, "\r\n")) != NULL) {
len = strlen(sptr);
if (len > max) {
max = len;
strcpy(longest, sptr);
}
}
}
if (max)
printf("%d: %s\n", max, longest);
else
printf("No strings read\n");
return 0;
}
答案 1 :(得分:0)
你来回拨打的大括号不正确。尝试:
while (((to[i] = from[i]) != '\0'))
如果您尝试将值打印到[i]和[i],您会在代码中找到问题。