我需要读取从标准输入到EOF的可变长度的许多字符串。 字符串由连续的字符组成,不用空格分隔,并且字符串没有最大长度。
使用:
add_action( 'woocommerce_after_variations_form' , 'woocommerce_show_hide_images_gallery', 5 );
function woocommerce_show_hide_images_gallery() {
global $product;
if( $product->is_type('variable') ){
?>
<script>
var attribute_id = 'power-system'; // change attribute id here
function showHideImages(attval)
{
if(attval)
{
var match_data = 'Electronics Protection'; // change attribute value here
if(attval.toUpperCase()==match_data.toUpperCase())
jQuery(".yith_magnifier_gallery img:odd").parent().hide();
else
jQuery(".yith_magnifier_gallery img:odd").parent().show();
}
}
//select box change
jQuery("#"+attribute_id).change(function(){
showHideImages( jQuery(this).val() );
});
//swatch click
jQuery(".swatchinput label[selectid=" + attribute_id + "]").click(function(){
showHideImages( jQuery(this).data('option') );
});
//select box & swatch change on page load (if you are getting back again)
jQuery(document).ready(function(){
showHideImages( jQuery("#"+attribute_id).val() );
showHideImages( jQuery(".swatchinput label.selectedswatch[selectid=" + attribute_id + "]").data('option') );
});
</script>
<?php
}
}
我无法确定当前字符串是前一个字符串的一部分还是新字符串的一部分,因为它全部打印在一行中(而且我不知道在哪里打印“ \ n”)。
样本输入:
char st[101];
while(scanf("%100s",st) != EOF){ //divide the input into parts of 100 chars
int i;
for(i=0; i<strlen(st);i++){
printf("%c",st[i]);
}
}
输出:
aaaaaaaaa[...]aaaaa
bbbbbbbbb[...]bbbbb
有解决方案吗?
P.S。我无法使用aaaa[...]aabbbbbb[...]bbbb
处理EOF。
答案 0 :(得分:0)
这是您使用/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package xlsxreader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
/**
*
* @author khaled
*/
public class XlsxReader {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException, InvalidFormatException {
File file = new File("C:\\Users\\khaled\\Desktop\\myXLSX file.xlsx");
Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
Sheet sheet = workbook.getSheetAt(0);
int column_index_1 = 0;
int column_index_2 = 0;
int column_index_3 = 0;
Row row = sheet.getRow(0);
for (Cell cell : row) {
// Column header names.
switch (cell.getStringCellValue()) {
case "MyFirst Column":
column_index_1 = cell.getColumnIndex();
break;
case "3rd Column":
column_index_2 = cell.getColumnIndex();
break;
case "forth Column":
column_index_3 = cell.getColumnIndex();
break;
}
}
for (Row r : sheet) {
if (r.getRowNum()==0) continue;//hearders
Cell c_1 = r.getCell(column_index_1);
Cell c_2 = r.getCell(column_index_2);
Cell c_3 = r.getCell(column_index_3);
if (c_1 != null && c_1.getCellType() != Cell.CELL_TYPE_BLANK
&&c_2 != null && c_2.getCellType() != Cell.CELL_TYPE_BLANK
&&c_3 != null && c_3.getCellType() != Cell.CELL_TYPE_BLANK) {
System.out.print(" "+c_1 + " " + c_2+" "+c_3+"\n");
}
}
}
处理EOF
的方式:
getchar
此代码将在stdout上复制其输入。
如果您想一次处理整行,最简单的方法是使用int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
(它是POSIX,不是标准C):
getline
如果您没有char *line = NULL;
size_t size = 0;
ssize_t nread;
while ((nread = getline(&line, &size, stdin)) != -1) {
// nread characters were read
do_stuff_with(line);
}
free(line);
,则可以自己编写(使用getline
和getchar
)。