我有一个具体的问题。我必须从两个文件中读取字符串并将它们与char进行比较,并告诉它哪一行是差异,以及它们有多少个字符。我已经制作了指针和所有东西,但问题是当它涉及到第一个文件的末尾时(它需要只读取较短文件的长度)我无法比较最后一个String因为我的for循环直到'\ n',在最后一行没有\ n。但另一方面,如果我把'\ 0'放在for循环中,它会给我一个错误的结果,因为它也将'\ n'计为char。我该如何处理这个问题?建议?我不想使用strcmp(),因为我需要计算char差异,还有一些其他条件需要实现。这是我的问题:
while(!feof(fPointer)){
zeichnen = 0;
fgets(singleLine, 150, fPointer);
fgets(singleLine2, 150, fPointer2);
length = strlen(singleLine); // save the length of each row, in order to compare them
length2 = strlen(singleLine2);
if(length <= length2){
for(i=0; singleLine[i] != '\n'; i++){
singleLine[i] = tolower(singleLine[i]);
singleLine2[i] = tolower(singleLine2[i]);
if(singleLine[i] != singleLine2[i]){
zeichnen++;
}
}
printf("Zeile: %d \t Zeichnen: %d\n", zeile, zeichnen); // row, char
答案 0 :(得分:0)
function reverseCase(input) {
var output = []
for(var char in input) {
var character = input[char]
if(character == character.toUpperCase())
output.push(character.toLowerCase())
else
output.push(character.toUpperCase())
}
return output.join('')
}
替代方法是使用逻辑和运算符来测试for循环条件部分中的两个或多个条件。
从fgets手册页:
char * fgets(char * s,int size,FILE * stream);
fgets()成功时返回 s ,错误时或文件结束时返回NULL 在没有读取任何字符时发生。
所以你应该有while(true)循环并检查两个fgets返回输入结束的值。